A2-06-04. MySQL Stored Procedure Parameters

时间:2022-06-01 19:22:38

转载自:http://www.mysqltutorial.org/stored-procedures-parameters.aspx

 

MySQL Stored Procedure Parameters

 

 Summary: in this tutorial, you will learn how to write stored procedures that have parameters. You will also go through a couple of examples to understand different kinds of parameters.

Introduction to MySQL stored procedure parameters

Almost stored procedures that you develop require parameters. The parameters make the stored procedure more flexible and useful. In MySQL, a parameter has one of three modes: IN,OUT, or INOUT.

  • IN – is the default mode. When you define an IN parameter in a stored procedure, the calling program has to pass an argument to the stored procedure. In addition, the value of an INparameter is protected. It means that even the value of the IN parameter is changed inside the stored procedure, its original value is retained after the stored procedure ends. In other words, the stored procedure only works on the copy of the IN parameter.
  • OUT – the value of an OUT parameter can be changed inside the stored procedure and its new value is passed back to the calling program. Notice that the stored procedure cannot access the initial value of the OUT parameter when it starts.
  • INOUT – an INOUT  parameter is a combination of IN  and OUT  parameters. It means that the calling program may pass the argument, and the stored procedure can modify the INOUTparameter, and pass the new value back to the calling program.

The syntax of defining a parameter in the stored procedures is as follows:

 

  • The MODE could be IN , OUTor INOUT , depending on the purpose of the parameter in the stored procedure.
  • The param_name is the name of the parameter. The name of the parameter must follow the naming rules of the column name in MySQL.
  • Followed the parameter name is its data type and size. Like a variable, the data type of the parameter can be any valid MySQL data type.

Each parameter is separated by a comma (,) if the stored procedure has more than one parameter.

Let’s practice with some examples to get a better understanding. We will use the tables in the sample database for the demonstration.

MySQL stored procedure parameter examples

The IN parameter example

The following example illustrates how to use the IN parameter in the GetOfficeByCountry stored procedure that selects offices located in a particular country.

The countryName is the IN parameter of the stored procedure. Inside the stored procedure, we select all offices that locate in the country specified by the countryName parameter.

Suppose, we want to get all offices in the USA, we just need to pass a value (USA) to the stored procedure as follows:

A2-06-04. MySQL Stored Procedure Parameters

To get all offices in France, we pass the France literal string to the GetOfficeByCountry stored procedure as follows:

A2-06-04. MySQL Stored Procedure Parameters

The OUT parameter example

The following stored procedure returns the number of orders by order status. It has two parameters:

  • orderStatus : the IN parameter that is the order status which we want to count the orders.
  • total : the OUT parameter that stores the number of orders for a specific order status.

The following is the source code of the CountOrderByStatus stored procedure.

To get the number of shipped orders, we call the CountOrderByStatus  stored procedure and pass the order status as Shipped, and also pass an argument ( @total ) to get the return value.

A2-06-04. MySQL Stored Procedure Parameters

To get the number of orders that are in-process, we call the CountOrderByStatus stored procedure as follows:

A2-06-04. MySQL Stored Procedure Parameters

The INOUT parameter example

The following example demonstrates how to use an INOUT parameter in the stored procedure.

How it works.

  • The set_counter  stored procedure accepts one INOUT  parameter ( count ) and one INparameter ( inc ).
  • Inside the stored procedure, we increase the counter ( count ) by the value of the inc parameter.

See how we call the set_counter  stored procedure:

In this tutorial, we have shown you how to define parameters for a stored procedure, and introduced you to different parameter modes: IN, OUT, and INOUT.