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:

The following picture shows the output:

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)

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:

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.

Postingan terbaru

LIHAT SEMUA