MySQL儲存過程in、out、inout引數示例與總結

人生夢復夢發表於2021-01-04

儲存過程

1.建立儲存過程並檢視全域性變數

mysql> create database yy;
Query OK, 1 row affected (0.00 sec)

mysql> use yy;
Database changed
mysql> set @num1=10,@num2=20,@num3=30;	//設定全域性變數
mysql> delimiter $$
mysql> create procedure p(in num1 int,out num2 int,inout num3 int)
    -> begin
    -> select num1,num2,num3;
    -> set num1=100,num2=200,num3=300;
    -> select num1,num2,num3;
    -> end $$
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;
mysql> call p(@num1,@num2,@num3);

在這裡插入圖片描述
總結1:

  • in 和 inout 引數會將全域性變數的值傳入儲存過程中,而 out 引數不會將全域性變數的值傳入儲存過程中。在儲存過程使用中,引數值 in、out、inout 都會發生改變。

2.呼叫儲存過程時全域性變數值的變化

mysql> select @num1,@num2,@num3;

在這裡插入圖片描述
總結2:

  • 當呼叫完儲存過程後,發現 in 引數不會對全域性變數的值引起變化,而 out 和 inout 引數呼叫完儲存過程後,會對全域性變數的值產生變化,會將儲存過程引用後的值賦值給全域性變數。
  • in引數賦值型別可以是變數還有定值,而out和inout引數賦值型別必須是變數。

相關文章