3.儲存過程的引數
阿新 • • 發佈:2019-01-02
來源:網易雲課堂《精通MySQL儲存過程、函式和觸發器》課程
講師:huangxifeng607(黃錫峰)
筆記:
(1)儲存過程的傳入引數IN
需求:編寫儲存過程,傳入uid,返回該使用者的uname
delimiter $$ create procedure testa(my_uid int) begin declare my_uname varchar(32) default ''; select uname into my_uname from users where uid=my_uid; select my_uname; end; $$ delimiter ;
1.傳入引數:型別為IN,表示該引數的值必須在呼叫儲存過程時指定,如果不顯式指定為IN,那麼預設就是IN型別
2.IN型別引數一半隻用於傳入,在呼叫儲存過程中一般不作修改和返回
3.如果呼叫儲存過程中需要修改和返回值,可以使用OUT型別引數
(2)儲存過程的傳出引數OUT
需求:呼叫儲存過程時,傳入uid返回該使用者的uname
delimiter $$ create procedure testa(IN my_uid int, OUT my_uname varchar(32)) begin select uname into my_uname from users where uid=my_uid; select my_uname; end; $$ delimiter ;
set @uname:='';
call testa(2, @uname);
select @uname as myunameAA;
1.傳出引數:在呼叫儲存過程中,可以改變其值,並可返回
2.OUT是傳出引數,不能用於傳入引數值
3.呼叫儲存過程時,OUT引數也需要指定,但必須是變數,不能是常量
4.如果既需要傳入,同時又需要傳出,則可以使用INOUT型別引數
(3)儲存過程的可變引數INOUT
需求:呼叫儲存過程時,引數my_uid和my_uname,既是傳入,也是傳出引數
delimiter $$ create procedure testa(INOUT my_uid int, INOUT my_uname varchar(32)) begin set my_uid=2; set my_uname='hxf3' select uname into my_uname from users where uid=my_uid; select my_uid,my_uname; end; $$ delimiter ;
set @uname:='';
set @uid:=0;
call testa(@uid, @uname);
select @uid as uidAA, @uname as myunameAA;
1.可變變數INOUT:呼叫時可傳入值,在呼叫過程中,可修改其值,同時也可返回值。
2.INOUT引數集合了IN和OUT型別的引數功能
3.INOUT呼叫時傳入的是變數,而不是常量
(4)小結
1.儲存過程的引數型別有:IN, OUT, INOUT
2.儲存過程各引數的使用示例