一、in、out、inout
1、in:传入参数,在存储过程外部无法使用(如i1),
2、out:导入变量,在存储过程外的赋值无法导入存储过程(如p1),在存储过程内重新被赋值(如r1),
3、inout:兼具in和out的作用,可将存储过程外部的赋值带入存储过程内,重新设置后传出,

-- 创建存储过程 delimiter $$ drop procedure if EXISTS proc_p1 $$ create procedure proc_p1(in i1 int,inout ir1 int,out r1 int,out p1 int) begin declare d2 int default 3; set p1=p1; set ir1=ir1+10; if i1=1 then set r1=100+d2; elseif i1=2 then set r1=1000+d2; else set r1=d2; end if; end $$ delimiter ; -- 调用存储过程 set @o=10; set @u=10; set @p=10; call proc_p1(4,@o,@u,@p); select @o,@u,@p;
二、存储过程在pymysql中的使用
import pymysql conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='',db='chouti',charset='utf8') cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 1、调用存储过程 cursor.callproc('proc_p1',(4,3,2,1)) # 2、获取存储过程中的select结果 ret_select = cursor.fetchall() print(ret_select) # 3、获取存储过程的返回值 cursor.execute('select @_proc_p1_0,@_proc_p1_1,@_proc_p1_2,@_proc_p1_3') # 4、查看存储过程的返回值 ret_arges = cursor.fetchall() print(ret_arges) conn.commit() cursor.close() conn.close()

注意:查看存储过程的返回值时的参数格式为:@_存储过程名_参数位置,
三、存储过程中的赋值into

浙公网安备 33010602011771号