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

#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. 执行automake时报错 error while making link: Operation not supported

    执行automake时报错: [root@localhost project]# automake --add-missingconfigure.in: installing `./install-s ...

  2. IDEA 单元测试 导入JUnit4到项目

    一.IDEA自带JUnit4的jar包,现在让我们来导入. Step 1. IDEA最上面一栏的菜单栏中,选File->Project Structure(从上往下第11个),弹出窗口左边有一个 ...

  3. 简单mysql类

    ---恢复内容开始--- class mysql { private $host; private $user; private $pass; private $database; private $ ...

  4. php 原生文件下载

    1.整个网页的html界面源码下载: xiazai.php <html> <head> <meta charset ="utf-8"> < ...

  5. cnBlogs博客推荐

      数据结构和算法若可以称为为编程的细胞结构,那设计模式就是编程的灵魂气脉. 一个从是编程的微观演绎,一个是编程的宏观设计.这个从技术和艺术的结合体,毫无疑问是在世界末日之前的很伟大的一项发明. 设计 ...

  6. 【cs229-Lecture5】生成学习算法:1)高斯判别分析(GDA);2)朴素贝叶斯(NB)

    参考: cs229讲义 机器学习(一):生成学习算法Generative Learning algorithms:http://www.cnblogs.com/zjgtan/archive/2013/ ...

  7. Python六大开源框架对比:Web2py略胜一筹(转)

    Python是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准库也是值得大家称赞的,Python甚至还自带 ...

  8. liunx trac 安装记录

    1,下载地址 http://trac.edgewall.org/   2.安装 apache,python, mysql  3,安装trac (我的是0.12)  tar -zxvf  你下载的安装包 ...

  9. Elasticsearch学习之嵌套聚合,下钻分析,聚合分析

    1. 计算每个tag下的商品数量 GET /ecommerce/product/_search { "aggs": { "group_by_tags": { & ...

  10. sencha touch list ListPaging使用详解

    示例代码: Ext.define('app.view.message.List', { alternateClassName: 'messageList', extend: 'Ext.List', x ...