存儲過程的傳入參數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類型參數
存儲過程的傳出參數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 ;
1.傳出參數:在調用存儲過程中,可以改變其值,並可返回
2.OUT是傳出參數,不能用於傳入參數值
3.調用存儲過程時,OUT參數也需要指定,但必須是變量,不能是常量
4.如果既需要傳入,同時又需要傳出,則可以使用INOUT類型參數
存儲過程的可變參數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 uid,uname into my_uid,my_uname from users where uid=my_uid; select my_uid,my_uname; end; $$ Delimiter ;
1.可變變量INOUT:調用時可傳入值,在調用過程中,可修改其值,同時也可返回值。
2.INOUT參數集合了IN和OUT類型的參數功能
3.INOUT調用時傳入的是變量,而不是常量
