Mysql stored procedure result set into variable

Summary: in this tutorial, you will learn about variables including declaring variables, setting their values, and assigning value fields of a record to variables.

What is a variable

A variable is an object that holds a single value of a specific type e.g., integer, date, or varying character string.

We typically use variables in the following cases:

  • As a loop counter to count the number of times a loop is performed.
  • To hold a value to be tested by a control-of-flow statement such as WHILE.
  • To store the value returned by a stored procedure or a function

Declaring a variable

To declare a variable, you use the DECLARE statement. For example, the following statement declares a variable named @model_year:

DECLARE @model_year SMALLINT;

Code language: SQL (Structured Query Language) (sql)

The DECLARE statement initializes a variable by assigning it a name and a data type. The variable name must start with the @ sign. In this example, the data type of the @model_year variable is SMALLINT.

By default, when a variable is declared, its value is set to NULL.

Between the variable name and data type, you can use the optional AS keyword as follows:

DECLARE @model_year AS SMALLINT;

Code language: SQL (Structured Query Language) (sql)

To declare multiple variables, you separate variables by commas:

DECLARE @model_year SMALLINT, @product_name VARCHAR(MAX);

Code language: SQL (Structured Query Language) (sql)

Assigning a value to a variable

To assign a value to a variable, you use the SET statement. For example, the following statement assigns 2018 to the @model_year variable:

SET @model_year = 2018;

Code language: SQL (Structured Query Language) (sql)

Using variables in a query

The following SELECT statement uses the @model_year variable in the WHERE clause to find the products of a specific model year:

SELECT product_name, model_year, list_price FROM production.products WHERE model_year = @model_year ORDER BY product_name;

Code language: SQL (Structured Query Language) (sql)

Now, you can put everything together and execute the following code block to get a list of products whose model year is 2018:

DECLARE @model_year SMALLINT; SET @model_year = 2018; SELECT product_name, model_year, list_price FROM production.products WHERE model_year = @model_year ORDER BY product_name;

Code language: SQL (Structured Query Language) (sql)

Note that to execute the code, you click the Execute button as shown in the following picture:

Mysql stored procedure result set into variable

The following picture shows the output:

Mysql stored procedure result set into variable

Storing query result in a variable

The following steps describe how to store the query result in a variable:

First, declare a variable named @product_count with the integer data type:

DECLARE @product_count INT;

Code language: SQL (Structured Query Language) (sql)

Second, use the SET statement to assign the query’s result set to the variable:

SET @product_count = ( SELECT COUNT(*) FROM production.products );

Code language: SQL (Structured Query Language) (sql)

Third, output the content of the @product_count variable:

SELECT @product_count;

Code language: SQL (Structured Query Language) (sql)

Or you can use the PRINT statement to print out the content of a variable:

PRINT @product_count;

Code language: SQL (Structured Query Language) (sql)

or

PRINT 'The number of products is ' + CAST(@product_count AS VARCHAR(MAX));

Code language: SQL (Structured Query Language) (sql)

The output in the messages tab is as follows:

The number of products is 204

Code language: SQL (Structured Query Language) (sql)

To hide the number of rows affected messages, you use the following statement:

SET NOCOUNT ON;

Code language: SQL (Structured Query Language) (sql)

Selecting a record into variables

The following steps illustrate how to declare two variables, assign a record to them, and output the contents of the variables:

First, declare variables that hold the product name and list price:

DECLARE @product_name VARCHAR(MAX), @list_price DECIMAL(10,2);

Code language: SQL (Structured Query Language) (sql)

Second, assign the column names to the corresponding variables:

SELECT @product_name = product_name, @list_price = list_price FROM production.products WHERE product_id = 100;

Code language: SQL (Structured Query Language) (sql)

Third, output the content of the variables:

SELECT @product_name AS product_name, @list_price AS list_price;

Code language: SQL (Structured Query Language) (sql)
Mysql stored procedure result set into variable

Accumulating values into a variable

The following stored procedure takes one parameter and returns a list of products as a string:

CREATE PROC uspGetProductList( @model_year SMALLINT ) AS BEGIN DECLARE @product_list VARCHAR(MAX); SET @product_list = ''; SELECT @product_list = @product_list + product_name + CHAR(10) FROM production.products WHERE model_year = @model_year ORDER BY product_name; PRINT @product_list; END;

Code language: SQL (Structured Query Language) (sql)

In this stored procedure:

  • First, we declared a variable named @product_list with varying character string type and set its value to blank.
  • Second, we selected the product name list from the products table based on the input @model_year. In the select list, we accumulated the product names to the @product_list variable. Note that the CHAR(10) returns the line feed character.
  • Third, we used the PRINT statement to print out the product list.

The following statement executes the uspGetProductList stored procedure:

EXEC uspGetProductList 2018

Code language: SQL (Structured Query Language) (sql)

The following picture shows the partial output:

Mysql stored procedure result set into variable

In this tutorial, you have learned about variables including declaring variables, setting their values, and assigning value fields of a record to the variables.

Can stored procedure return value MySQL?

To return a value from stored procedure, you need to use user defined session specific variable. Add @ symbol before variable name. Now second call for difference of two values. Call the stored procedure.

Can procedure return a value?

A stored procedure does not have a return value but can optionally take input, output, or input-output parameters. A stored procedure can return output through any output or input-output parameter.

How declare variable in MySQL procedure?

To declare a variable inside a stored procedure, you use the DECLARE statement as follows:.
DECLARE variable_name datatype(size) [DEFAULT default_value]; ... .
DECLARE totalSale DEC(10,2) DEFAULT 0.0; ... .
DECLARE x, y INT DEFAULT 0; ... .
SET variable_name = value; ... .
DECLARE total INT DEFAULT 0; SET total = 10;.

What is stored procedure result set?

In addition to returning output parameters, a stored procedure can return a result set (that is, a result table associated with a cursor opened in the stored procedure) to the application that issues the CALL statement. The application can then issue fetch requests to read the rows of the result set cursor.