对于存储过程,可以接收参数,其参数有三类:

#in          仅用于传入参数用
#out 仅用于返回值用
#inout 既可以传入又可以当作返回值

传入参数使用格式 in 变量 数据类型

返回值使用格式 out 变量 数量类型

类似于python的函数

要在类似于python的函数的传值,但传值格式不同

delimiter // # 设置mysql结束符合为//
create procedure p2(in n1 int,in n2 int,out res int) # 创建程序固定procedure 和p1是存储过程名字
BEGIN
select * from db2.teacher where tid >n1 and tid <n2 ; # sql语句
# 调用一个执行成功与否的返回值
set res = 1; # 设置一个变量返回值 为1 ;结束
end //
delimiter ;
#在mysql中调用

# 设置一个返回的初始值 初始值为0 如果sql语句执行完存储过程创建好后,返回值就为1
0代表假(执行失败),1代表真(执行成功)
 

set @x=0;
# 传参
@x的值 传给res
call p2(2,4,@x);

select * from db2.teacher where tid >2 and tid <4
mysql> set @x=0;
Query OK, 0 rows affected (0.07 sec) mysql> call p2(2,4,@x);
+-----+-----------------+
| tid | tname |
+-----+-----------------+
| 3 | 刘海燕老师 |
+-----+-----------------+
1 row in set (0.11 sec) Query OK, 0 rows affected (0.13 sec)

查看返回值 @x

mysql> select @x;
+------+
| @x |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
 
 在python中基于pymysql调用:

0 相当于 set @x=0 直接传0就可以了
callproc('p2',(2,4,0))
import pymysql

mysql_host = '192.168.0.108'
port = 3306
mysql_user = 'root'
mysql_pwd = ''
encoding = 'utf8' # 建立 连接mysql服务端 conn = pymysql.connect(
host=mysql_host, # mysql服务端ip
port=port, # mysql端口
user=mysql_user, # mysql 账号
password=mysql_pwd, # mysql服务端密码
db='db2', # 操作的库
charset=encoding # 读取字符串编码 ) # 拿到游标对象
cur = conn.cursor(pymysql.cursors.DictCursor) '''
游标是给mysql提交命令的接口
mysql>
把sql语句传递到这里
''' # 执行sql语句
cur.callproc('p2',(2,4,0))
# 打印查询结果
print(cur.fetchall()) # 执行完sql语句要关闭游标和mysql连接
cur.close()
conn.close() '''
[{'tid': 3, 'tname': '刘海燕老师'}]
'''

callproc()传参时候 涉及这几个参数

@_存储过程名字 _0 代表第一个参数 _1 第二个参数

@_p2_0=2,@_p2_1=4,@_p2_2=0

pymysql 查看返回值

用到 callproc传参的 @_p2_2

import pymysql

mysql_host = '192.168.0.108'
port = 3306
mysql_user = 'root'
mysql_pwd = ''
encoding = 'utf8' # 建立 连接mysql服务端 conn = pymysql.connect(
host=mysql_host, # mysql服务端ip
port=port, # mysql端口
user=mysql_user, # mysql 账号
password=mysql_pwd, # mysql服务端密码
db='db2', # 操作的库
charset=encoding # 读取字符串编码 ) # 拿到游标对象
cur = conn.cursor(pymysql.cursors.DictCursor) '''
游标是给mysql提交命令的接口
mysql>
把sql语句传递到这里
''' # 执行sql语句
cur.callproc('p2',(2,4,0))
# 打印查询结果
print(cur.fetchall()) # 查看返回值
cur.execute('select @_p2_2;')
# 打印查询结果
print(cur.fetchall()) # 执行完sql语句要关闭游标和mysql连接
cur.close()
conn.close() '''
[{'tid': 3, 'tname': '刘海燕老师'}]
[{'@_p2_2': 1}]
'''

最新文章

  1. iOS 面试题(四):block 什么时候需要构造循环引用 --转自唐巧
  2. HT for Web可视化QuadTree四叉树碰撞检测
  3. 湖大OJ-实验C----NFA转换为DFA
  4. git项目版本管理
  5. Excl 的一些用法--如何给很多列赋同一个值
  6. MySQL数据库性能优化的关键参数(转)
  7. POJ2186 POPULAR COW
  8. GridView、Repeater获取当前行号
  9. linux ARP攻击处理
  10. JavaScript 中的事件类型1(读书笔记思维导图)
  11. ASP.NET Core 2.0 : 九.从Windows发布到CentOS的跨平台部署
  12. Django+Bootstrap+Mysql 搭建个人博客(一)
  13. 2017-8-2新开了一个ABP交流的QQ群(291304962 ),欢迎加入
  14. EntityFramework Core笔记:表结构及数据基本操作(2)
  15. nodejs笔记之连接mysql数据库
  16. 关于RecyclerView你知道的不知道的都在这了(上)
  17. Struts2_配置文件
  18. jsp-9大内置对象简介
  19. February 4th, 2018 Week 6th Sunday
  20. MySQL中的编码问题

热门文章

  1. mybais 之parameterType =&quot;list&quot;
  2. C语言的f(open)函数(文件操作/读写)
  3. Esper学习之十:EPL语法(六)
  4. css笔记 - transition学习笔记(二)
  5. Android studio 安装已经下载好的gradle.zip文件【ubuntu 14.04 LTS环境】
  6. C语言程序设计--指针基础
  7. iOS property中的strong 、weak、copy 、assign 、retain 、unsafe_unretained 与autoreleasing区别和作用详解
  8. Weibull分布(韦伯分布、威布尔分布)
  9. scrapy-redis的使用与解析
  10. js跨域请求数据的3种常用的方法