select * from blog where id > n1;
END //
delimiter ;
在mysql中调用
call p2(3,2)
在python中基于pymysql调用
cursor.callproc('p2',(3,2))
print(cursor.fetchall())
in:传入参数
delimiter //
create procedure p3(
in n1 int,
out res int
BEGIN
select * from blog where id > n1;
set res = 1;
END //
delimiter ;
在mysql中调用
set @res=0; #0代表假(执行失败),1代表真(执行成功)
call p3(3,@res);
select @res;
在python中基于pymysql调用
cursor.callproc('p3',(3,0)) #0相当于set @res=0
print(cursor.fetchall()) #查询select的查询结果
cursor.execute('select @_p3_0,@_p3_1;') #@p3_0代表第一个参数,@p3_1代表第二个参数,即返回值
print(cursor.fetchall())
out:返回值
delimiter //
create procedure p4(
inout n1 int
BEGIN
select * from blog where id > n1;
set n1 = 1;
END //
delimiter ;
在mysql中调用
set @x=3;
call p4(@x);
select @x;
在python中基于pymysql调用
cursor.callproc('p4',(3,))
print(cursor.fetchall()) #查询select的查询结果
cursor.execute('select @_p4_0;')
print(cursor.fetchall())
inout:既可以传入又可以返回
四 执行存储过程
-- 无参数
call proc_name()
-- 有参数,全in
call proc_name(1,2)
-- 有参数,有in,out,inout
set @t1=0;
set @t2=3;
call proc_name(1,2,@t1,@t2)
执行存储过程
在MySQL中执行存储过程-- 无参数
call proc_name()
-- 有参数,全in
call proc_name(1,2)
-- 有参数,有in,out,inout
set @t1=0;
set @t2=3;
call proc_name(1,2,@t1,@t2)
执行存储过程
在MySQL中执行存储过程
!/usr/bin/env python
-- coding:utf-8 --
import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
执行存储过程
cursor.callproc('p1', args=(1, 22, 3, 4))
获取执行完存储的参数
cursor.execute("select @_p1_0,@_p1_1,@_p1_2,@_p1_3")
result = cursor.fetchall()
conn.commit()
cursor.close()
conn.close()
print(result)
在python中基于pymysql执行存储过程
五 删除存储过程
drop procedure proc_name;