博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 内置功能 存储过程 创建有参存储过程
阅读量:4982 次
发布时间:2019-06-12

本文共 2298 字,大约阅读时间需要 7 分钟。

 

 

 

对于存储过程,可以接收参数,其参数有三类:#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 

 

#在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 pymysqlmysql_host = '192.168.0.108'port = 3306mysql_user = 'root'mysql_pwd = '123'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 pymysqlmysql_host = '192.168.0.108'port = 3306mysql_user = 'root'mysql_pwd = '123'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}]'''

 

转载于:https://www.cnblogs.com/mingerlcm/p/9946688.html

你可能感兴趣的文章
POJ 1308 Is It A Tree?(并查集)
查看>>
N进制到M进制的转换问题
查看>>
php PDO (转载)
查看>>
[置顶] 一名优秀的程序设计师是如何管理知识的?
查看>>
highcharts曲线图
查看>>
extjs动态改变样式
查看>>
宏定义
查看>>
笔记:git基本操作
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
查看>>
Ognl中“%”、“#”、“$”详解
查看>>
我对应用软件——美团的看法
查看>>
python第六篇文件处理类型
查看>>
ubuntu16系统磁盘空间/dev/vda1占用满的问题
查看>>
grid网格布局
查看>>
九涯的第一次
查看>>
处理器管理与进程调度
查看>>
向量非零元素个数_向量范数详解+代码实现
查看>>
java if 用法详解_Java编程中的条件判断之if语句的用法详解
查看>>
matlab sin函数 fft,matlab的fft函数的使用教程
查看>>
LeetCode 题解之Add Digits
查看>>