mysql儲存過程引數輸入輸出IN/OUT/INOUT
阿新 • • 發佈:2018-11-06
mysql儲存過程中,IN
用來輸入引數,OUT
用來輸出引數,INOUT
輸入和輸出。
- IN引數
建立儲存過程
mysql> delimiter //
mysql> create procedure proce1(IN count int)
-> begin
-> select count;
-> set count = 2;
-> select count;
-> end
-> //
執行儲存過程
mysql> set @count = 1//
Query OK, 0 rows affected (0.00 sec)
mysql> call proce1(@count)//
+-------+
| count |
+-------+
| 1 |
+-------+
1 row in set (0.00 sec)
+-------+
| count |
+-------+
| 2 |
+-------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> select @count
-> //
+--------+
| @count |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
mysql>
在上面儲存過程中,我們定義了一個引數@count
,賦值為1,傳入到儲存過程中,在儲存過程中賦值為2,當儲存過程結束後,列印@count
的值依舊是1.
- OUT引數
建立儲存過程
mysql> create procedure proce_out(OUT count int)
-> begin
-> select count;
-> set count = 2;
-> select count;
- > end//
Query OK, 0 rows affected (0.05 sec)
執行儲存過程
mysql> set @count=1;
-> call proce_out(@count);
-> select @count;
-> //
Query OK, 0 rows affected (0.00 sec)
+-------+
| count |
+-------+
| NULL |
+-------+
1 row in set (0.00 sec)
+-------+
| count |
+-------+
| 2 |
+-------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
+--------+
| @count |
+--------+
| 2 |
+--------+
1 row in set (0.00 sec)
mysql>
@count
在外面賦值為1,因為引數是OUT
型別,所以儲存過程中打印出來為null
,儲存過程中賦值為2,儲存過程結束,檢視@count
的值,依舊為2。
- INOUT 輸入輸出引數
建立儲存過程
mysql> create procedure proce_inout(INOUT count int)
-> begin
-> select count;
-> set count = 2;
-> select count;
-> end;
-> //
執行儲存過程
mysql> set @count = 1;
-> call proce_inout(@count);
-> select @count;
-> //
Query OK, 0 rows affected (0.00 sec)
+-------+
| count |
+-------+
| 1 |
+-------+
1 row in set (0.00 sec)
+-------+
| count |
+-------+
| 2 |
+-------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
+--------+
| @count |
+--------+
| 2 |
+--------+
1 row in set (0.00 sec)
我們在外面把@count
賦值為1,儲存過程裡面獲取到了值,然後賦值為2,儲存過程結束後,打印出來的值依舊是2