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

#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}]
'''

mysql 内置功能 存储过程 创建有参存储过程的更多相关文章

  1. mysql 内置功能 存储过程 目录

    mysql 内置功能 存储过程介绍 mysql 内置功能 存储过程 创建无参存储过程 mysql 内置功能 存储过程 创建有参存储过程 mysql 内置功能 存储过程 删除存储过程

  2. mysql 内置功能 存储过程介绍

    存储过程介绍 就是mysql内置功能把逻辑写好 的功能给封装好,封装成一个接口名,把接口名丢给应用程序,应用程序直接调用接口名实现一系列增删改查功能 这个接口叫存储过程 基于存储过程封装成一个功能 存 ...

  3. mysql 内置功能目录

    mysql 内置功能 视图介绍 mysql 内置功能 视图 使用 mysql 内置功能 触发器介绍 mysql 内置功能 触发器 实验 mysql 内置功能 事务 介绍 mysql 内置功能 存储过程 ...

  4. MySQL:记录的增删改查、单表查询、约束条件、多表查询、连表、子查询、pymysql模块、MySQL内置功能

    数据操作 插入数据(记录): 用insert: 补充:插入查询结果: insert into 表名(字段1,字段2,...字段n) select (字段1,字段2,...字段n) where ...; ...

  5. mysql 内置功能 存储过程 创建无参存储过程

    操作哪个数据库,就把存储过程建到那个数据库 例如 现在use db2; 应该把存储过程 建立到db2数据库里 创建无参存储过程 delimiter // # 设置mysql结束符合为// create ...

  6. mysql六:mysql内置功能(视图、触发器、事务、存储过程、函数)

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 通过使用视图可以把查询过程中的 ...

  7. MySQL内置功能之视图、触发器和存储过程

    主要内容: 一.视图 二.触发器 三.存储过程 1️⃣  视图 一.关于视图的理解 1.1.何谓视图? 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名], 用户使 ...

  8. Mysql内置功能《四》存储过程

    存储过程 一 存储过程介绍 存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql 使用存储过程的优点: #1. 用于替代程序写的SQL语句,实 ...

  9. 数据库——mysql内置功能(11)

    1.视图 视图是一个虚拟表(非真实存在),其本质是(根据SQL语句获取动态的数据集,并未其命名),用户使用时只需使用(名称)即可获取结果集,可以将该结果集当做表来使用 使用视图我们可以把查询过程中的临 ...

随机推荐

  1. 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习

    嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...

  2. WP8.1学习系列(第九章)——透视Pivot开发指南

    Windows Phone 8 的 Pivot 控件 2014/6/18 适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows P ...

  3. css笔记 - 张鑫旭css课程笔记之 z-index 篇

    一.z-index语法.支持的属性值等 z-index: 在支持z-index的元素上, z-index规定了元素(包括子元素)的垂直z方向的层级顺序, z-index可以决定哪个元素覆盖在哪个元素上 ...

  4. Python中四种运行其他程序的方式

    原文地址:http://blog.csdn.net/jerry_1126/article/details/46584179 在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在 ...

  5. 题目1442:A sequence of numbers(数列计算以及二分求幂运用)

    题目链接:http://ac.jobdu.com/problem.php?pid=1442 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  6. jquery scroll()滚动条事件

    最近做项目用了到scroll滚动条事件,花了很多时间做搜索,没有很好的先整理思考后再去搜索,做编码事件时,没有事先考虑清楚,理清思路,先做简单的测试成功后,再完成其他的实现. 1.scroll()事件 ...

  7. Stooge 排序

    Stooge排序是一种低效的递归排序算法,甚至慢于冒泡排序.在<算法导论>第二版第7章(快速排序)的思考题中被提到,是由Howard.Fine等教授提出的所谓“漂亮的”排序算法. 实现 如 ...

  8. 安装pod

    1.ruby升级最新 sudo gem update -n /usr/local/bin --system 2. $ gem sources *** CURRENT SOURCES *** https ...

  9. Testlink自动执行用例小程序

    记得原来在一个公司时,具体很多原因,testlink上项目中的用例都需要执行形成漂亮的报告,但实际测试中又不需要去执行,所以就必须将用例根据上一次测试报告一个一个手工去贴结果刷用例,几百条用例,几天就 ...

  10. Save vtkMatrix4x4 to a file 保存到文件

    vtkMatrix4x4是VTK中的一个表示4x4矩阵的一种数据结构,有时候我们想把其保存到一个文件中,那么可以使用如下的代码: void writeVtkMatrix4x4ToFile(const ...