精华内容
下载资源
问答
  • mysql存储过程多个参数传入的方法
    千次阅读
    2015-03-23 16:04:00

    对于

    select * from a where id in(1,2,3)

    存储过程中怎么把参数(1,2,3)传进去?

    写法如下:

    CREATE  PROCEDURE `P_parameter` (id_ VARCHAR (50))
    BEGIN

    SELECT * FROM A WHERE FIND_IN_SET(id, id_) ;

    END

    call P_parameter('1,2,3') 

    即可返回所有结果。

    转载于:https://www.cnblogs.com/huangen88/p/4360083.html

    更多相关内容
  • MySQL 存储过程返回多个

    千次阅读 2021-01-26 05:13:08
    要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数存储过程。返回多个值的存储过程示例我们看看orderinfo 表表中数据以下存储过程接受点买家姓名,并返回各个状态的订单总数。--手动创建存储过程 ...

    MySQL  存储过程返回多个值

    在本教程中,您将学习如何编写/开发返回多个值的存储过程。

    MySQL存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。

    返回多个值的存储过程示例

    我们看看 orderinfo 表

    0eb5b4e24721ff62e272f737901da29c.png

    表中数据

    3ff486f57eab726f652c1cb9bf470cb9.png

    以下存储过程接受点买家姓名,并返回各个状态的订单总数。

    --手动创建存储过程 CheckOrderStatus

    usetest;DROP PROCEDURE IF EXISTSCountOrderByStatus;

    DELIMITER $$usetest$$CREATE PROCEDURECheckOrderStatus(IN cust_name VARCHAR(20),

    OUT 50Count INT,

    OUT 60Count INT,

    OUT 80Count INT,

    out 90Count INT)BEGIN

    --50Count

    SELECT count(*) INTO 50Count

    FROMorderinfoWHERE buyer_name =cust_nameAND order_status = ‘50‘;--60Count

    SELECT count(*) INTO 50Count

    FROMorderinfoWHERE buyer_name =cust_nameAND order_status = ‘60‘;--80Count

    SELECT count(*) INTO 50Count

    FROMorderinfoWHERE buyer_name =cust_nameAND order_status = ‘80‘;--90Count

    SELECT count(*) INTO 50Count

    FROMorderinfoWHERE buyer_name =cust_nameAND order_status = ‘90‘;END$$

    DELIMITER ;

    除IN参数之外,存储过程还需要4个额外的OUT参数:50Count, 50Count, 50Count 和 50Count。 在存储过程中,使用带有COUNT函数的SELECT语句根据订单状态获取相应的订单总数,并将其分配给相应的参数。

    要使用CountOrderByStatus存储过程,可以传递客户名称和四个用户定义的变量来获取输出值。

    执行存储过程后,使用SELECT语句输出变量值。

    call CheckOrderStatus(‘哪吒‘,@50Count,@60Count,@80Count,@90Count);SELECT @50Count,@60Count,@80Count,@90Count;

    b95de3e0c7cbd3eda7bf0f643f10977c.png

    从Python调用返回多个值的存储过程

    以下代码片段显示如何从Python程序中调用返回多个值的存储过程。

    importpymysqldefcallProcedure1(name):‘‘‘调用存储过程,

    输入参数:姓名,输出:统计状态数;

    使用输出参数方式‘‘‘count1= ‘‘count2= ‘‘count3= ‘‘count4= ‘‘db= pymysql.connect(‘127.0.0.1‘,‘adil‘,‘helloyyj‘,‘test‘,3306,charset=‘UTF8‘)

    cur=db.cursor()#调用 CheckOrderStatus 存储过程,传入4个参数

    cur.callproc(‘CheckOrderStatus‘, args=(name, count1, count2, count3,count4))#以 python 固定格式获取返回的值:@_存储过程名_0, 第一个返回值

    t = cur.execute(‘SELECT @_CheckOrderStatus_0,@_CheckOrderStatus_1,@_CheckOrderStatus_2,@_CheckOrderStatus_3;‘)print(t)

    data=cur.fetchall()print(data)ifdata :for rec indata:for i inrange(len(rec)):print(rec[i])

    cur.close()

    db.close()defcallProcedure12(name):‘‘‘调用存储过程,

    输入参数:编号,在线时间,输出:帐号,密码;

    使用select返回记录方式‘‘‘db= pymysql.connect(‘127.0.0.1‘, ‘adil‘, ‘helloyyj‘, ‘test1‘, 3306, charset=‘UTF8‘)

    cur=db.cursor()#调用 存储过程

    cur.execute(‘call CheckOrderStatus1("哪吒",@50Count,@60Count,@80Count,@90Count)‘)#执行 select 获取 参数返回值

    t1 = cur.execute(‘SELECT @50Count,@60Count,@80Count,@90Count;‘)print(t1)

    data=cur.fetchall()print(data)ifdata :for rec indata:for i inrange(len(rec)):print(rec[i])

    cur.close()

    db.close()if __name__==‘__main__‘:#callProcedure1(‘哪吒‘)

    callProcedure12(‘哪吒‘)

    遇到的问题:

    7f4e8834970603e05431300c6df5c989.png

    有上可知,程序执行成功了,但是有一个Warning。

    Warning: (3719, "‘utf8‘ is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.")

    result=self._query(query)#3719,“3719:‘utf8‘目前是该别名的别名 字符集UTF8MB3,将来会被UTF8MB4取代 发布。请考虑使用UTF8MB4以明确无误。

    所以新建了一个数据库 test1,字符集为:utf8mb4,如下。

    3223f38d2f7e34089e6efc48307de58b.png

    再次创建存储过程 CheckOrderStatus1,执行程序即可,不在产生警告。

    原文:https://www.cnblogs.com/BlueSkyyj/p/10419772.html

    展开全文
  • 你是否为UI层繁杂的sql语句拼接烦恼,未服务器性能而头疼,这个存储过程方法或许为你打开一扇门
  • MySQL存储过程参数多参数传递

    千次阅读 2018-10-03 09:35:54
    MySQL开发的存储过程几乎都需要参数。这些参数使存储过程更加灵活和有用。 在MySQL中,参数有三种模式:IN,OUT或INOUT。 1,单参数 in DELIMITER $$USE dc3688$$CREATE PROCEDURE GetOfficeByCountry(IN country...

    MySQL开发的存储过程几乎都需要参数。这些参数使存储过程更加灵活和有用。 在MySQL中,参数有三种模式:IN,OUT或INOUT。

     1,单参数 in

    DELIMITER $$
    USE dc3688$$
    CREATE PROCEDURE GetOfficeByCountry(IN countryName VARCHAR(255))
    BEGIN
    SELECT *
    FROM offices
    WHERE country = countryName;
    END$$

    DELIMITER ;

    2,多参数 (in out)

    DELIMITER $$
    CREATE PROCEDURE CountOrderByStatus(
    IN orderStatus VARCHAR(25),
    OUT total INT)
    BEGIN
    SELECT count(orderNumber)
    INTO total
    FROM orders
    WHERE status = orderStatus;
    END$$
    DELIMITER ;

    调用方法
    CALL CountOrderByStatus('Shipped',@total);
    SELECT @total;

    3,参数 inout

    DELIMITER $$
    CREATE PROCEDURE set_counter(INOUT count INT(4),IN inc INT(4))
    BEGIN
    SET count = count + inc;
    END$$
    DELIMITER ;

    调用过程
    SET @counter = 1;
    CALL set_counter(@counter,1);

    可以实际操作一下不同参数用法
    文章来自 www.dc3688.com

    转载于:https://blog.51cto.com/13959155/2292182

    展开全文
  • MySQL 存储过程参数

    千次阅读 2021-01-18 19:14:57
    MySQL 存储过程参数MySQL存储过程参数简介在现实应用中,开发的存储过程几乎都需要参数。这些参数使存储过程更加灵活和有用。 在MySQL中,参数有三种模式:IN,OUT或INOUT。IN- 是默认模式。在存储过程中定义IN参数...

    MySQL  存储过程参数

    MySQL存储过程参数简介

    在现实应用中,开发的存储过程几乎都需要参数。这些参数使存储过程更加灵活和有用。 在MySQL中,参数有三种模式:IN,OUT或INOUT。

    IN - 是默认模式。在存储过程中定义IN参数时,调用程序必须将参数传递给存储过程。 另外,IN参数的值被保护。这意味着即使在存储过程中更改了IN参数的值,在存储过程结束后仍保留其原始值。换句话说,存储过程只使用IN参数的副本。

    OUT - 可以在存储过程中更改OUT参数的值,并将其更改后新值传递回调用程序。请注意,存储过程在启动时无法访问OUT参数的初始值。

    INOUT - INOUT参数是IN和OUT参数的组合。这意味着调用程序可以传递参数,并且存储过程可以修改INOUT参数并将新值传递回调用程序。

    在存储过程中定义参数的语法如下:

    MODE param_name param_type(param_size)

    上面语法说明如下 -

    根据存储过程中参数的目的,MODE可以是IN,OUT或INOUT。

    param_name是参数的名称。参数的名称必须遵循MySQL中列名的命名规则。

    在参数名之后是它的数据类型和大小。和变量一样,参数的数据类型可以是任何有效的MySQL数据类型。

    如果存储过程有多个参数,则每个参数由逗号(,)分隔。

    MySQL存储过程参数示例

    1.IN参数示例

    以下示例说明如何使用 ClassInfoProcedure 存储过程中的IN参数来查询选择相应的课程信息。

    usetest;DROP PROCEDURE IF EXISTS ClassInfoProcedure; --注意存储名不加引号。

    DELIMITER $$usetest$$CREATE PROCEDURE ClassInfoProcedure(IN id INT)BEGIN

    SELECT * FROM classInfo WHERE ids =id;END$$

    DELIMITER ;--注意这里的 ';' 前要留空格。

    id是存储过程的IN参数。在存储过程中,我们查询id参数对应的课程信息。

    假设我们想要查询id 对应的课程,我们只需要将一个值(id)传递给存储过程,如下所示:

    CALL ClassInfoProcedure(3);

    执行上面查询语句,得到以下结果

    bb1fe7fc6f875f29bc76c0ac24ee2bed.png

    2.OUT参数示例

    以下存储过程通过订单状态返回订单数量。它有两个参数:

    orderStatus:IN参数,它是要对订单计数的订单状态。

    total:存储指定订单状态的订单数量的OUT参数。

    以下是CountOrderByStatus存储过程的源代码。

    usetest;DROP PROCEDURE IF EXISTSCountOrderByStatus;

    DELIMITER $$usetest$$CREATE PROCEDURE CountOrderByStatus(IN orderStatus VARCHAR(25),

    OUT orderCountINT)BEGIN

    SELECT count(sid) INTO orderCount FROM orderinfo WHERE order_status =orderStatus;END$$

    DELIMITER ;

    执行

    696626ea40892395809c2aa5db166c65.png

    查看客户端如下

    88fd19bdf91193ba82d4c89dcc9929da.png

    要获取发货订单的数量,我们调用CountOrderByStatus存储过程,并将订单状态传递为已收货’50’,并传递参数(

    CALL CountOrderByStatus('50',@total);SELECT @total;

    执行上面查询语句后,得到以下结果

    dd5ace06520cbcb64ca56e6167a67956.png

    注意:因为上面定义了两个参数,所以调用是也要如上 传递两个参数,如果传递一个参数,会提示如下错误。

    859d5701b48246a08e418f31c01b9487.png

    INOUT参数示例

    以下示例演示如何在存储过程中使用INOUT参数。如下查询语句

    DELIMITER $$CREATE PROCEDURE set_counter(INOUT count INT(4),IN inc INT(4))BEGIN

    SET count = count +inc;END$$

    DELIMITER ;

    上面查询语句是如何运行的?

    set_counter存储过程接受一个INOUT参数(count)和一个IN参数(inc)。

    在存储过程中,通过inc参数的值增加计数器(count)。

    下面来看看如何调用set_counter存储过程:

    c256c9b290f56069ad90f18626fec7a8.png

    SET @counter = 1;

    CALL set_counter(@counter,1); --2

    SELECT @counter; --2

    CALL set_counter(@counter,5); --7

    SELECT @counter; --7

    展开全文
  • mysql存储过程 变量和参数类型

    万次阅读 2018-03-27 10:23:04
    简单的存储过程delimiter $$ create procedure testa() begin select * from p_m_table ; end; $$ delimiter ;存储过程的结构组成:1.创建格式 :create procedure 存储过程名2.包含一以上代码块,代码块在...
  • mysql存储过程教程(1)

    千次阅读 2021-02-07 17:30:12
    MySQL存储过程1.1 CREATE PROCEDURE (创建)CREATE PROCEDURE存储过程名(参数列表)BEGINSQL语句代码块END注意:由括号包围的参数列必须总是存在。如果没有参数,也该使用一个空参数列()。每个参数默认都是一个IN参数...
  • 一、接收一返回值 使用Map接收返回参数,output参数放在传入的param中 创建表: DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT ...
  • 存储过程中从结果集给多个参数赋值的小办法  今天在写存储过程的时候需要从数据库查询一条结果并根据结果为几个参数赋值。以前很少遇到这种情况,偶尔返回对多条的结果集也是用游标进行操作,对只返回一条结果的...
  • mysql存储过程之返回多个

    万次阅读 2018-07-09 13:15:50
    要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数存储过程。咱们先来看一个orders表它的结构:mysql> desc orders; +----------------+-------------+------+-----+---------+-------+ | Field | ...
  • mysql存储过程中利用传入和传出参数获取查询记录输出方法。 查询结果有两种: 第一种查询结果是单条记录,可利用传出参数输出,也可直接输出。 第二种查询结果是条记录,不能用传出参数的方式输出,可直接输出。 ...
  • Mysql存储过程调用

    千次阅读 2021-01-19 00:34:07
    1.1create procedure (创建)create procedure...每个参数默认都是一个in参数。要指定为其它参数,可在参数名之前使用关键词 out或inout在mysql客户端定义存储过程的时候使用delimiter命令来把语句定界符从;变为//。...
  • MySQL存储过程学习整理,游标使用,参数输入输出 MySQL游标使用MySQL存储过程参数用法 MySQL PROCEDURE用法 一、 什么是存储过程 1、可以理解为 sql 语句集,可以同时执行条sql,实现较复杂的逻辑。 2、关于...
  • MySQL存储过程和函数过程和函数,它们被编译后保存在数据库中,称为持久性存储模块(Persistent Stored Module,PSM),可以反复调用,运行速度快。1.1 存储过程存储过程是由过程化 SQL 语句书写的过程,这个过程经...
  • 学习mysql中call语句的用法,调用一参数的存储过程的例子。... CREATE PROCEDURE myProc(id int) //创建mysql存储过程参数-> BEGIN->-> SELECT 'in proc'+ id;-> END$$Query OK, 0 rows affect...
  • 接到这需求,本以为简单。...方法一 分割例:通过SQL Server存储过程传送数组参数删除条记录eg. ID 值为'1,2,3' 以下存储过程就是删除表中id号为1,2,3的记录:CREATE PROCEDURE DeleteNews@ID ...
  • MySQL存储过程动态SQL语句的生成 用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一节假日,我们可以使用一般的SQL语句嵌入到Java代码中,...
  • mysql存储过程学习笔记

    万次阅读 多人点赞 2019-02-22 17:09:36
    本文主要记录了本人学习mysql存储过程时的笔记,文档中用到的表结构在文档结尾处有说明。 一、定义  存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,...
  • 一、接收一返回值 使用Map接收返回参数,output参数放在传入的param中 创建表 DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT ...
  • MySQL存储过程不带参数

    千次阅读 2017-11-02 11:52:40
    接下来我们看看我现在的名为MySQL的Database下有没有已有的存储过程(procedure),有两种查询语句,本媛在下面会写两条的。 从上面得出的结果来看本媛的数据库中暂时木有一个存储过程,当然,上面的两种查询...
  • 在现实应用中,开发的存储过程几乎都需要参数,就是这些参数,使得存储过程更加灵活和有用。 在mysql中,参数有三种模式:IN,OUT或INOUT:IN - 是默认模式。在存储过程中定义IN参数时,调用程序必须将参数传递给...
  • 假设“另一个存储过程”的名62616964757a686964616fe78988e69d8331333361323032字是sp1,没有参数,返回的结果集共3列,全部为int型,那么“存储过程”里添加一与结果集列数相同的临时表或表变量用于接收“另一...
  • 我在做一查询成绩的系统,打算在mysql里面创建一个存储过程参数例如:学号,姓名,成绩, 现在我要查成绩,假如传入的参数是null则不匹配,比如参数列表(null,姓名,成绩),那么查询语句就是 select * from ...
  • 存储过程条件判断(SQL组合查询)

    千次阅读 2021-01-18 20:10:12
    存储过程里想实现多个传入参数的判断,里面有7个传入参数条件.CREATEPROCEDUREsp_tbWasteSource_Search(@sddatetime,//开始日期@eddatetime,//结束日期@con1varchar(50),@con2varchar(30),@con3varchar(5),@con4var...
  • MySql存储过程,传数组参数

    千次阅读 2018-09-17 10:38:40
    第二版想法为,把所有参数传入到存储过程,循环参数为一数组,mysql存储过程里没有split函数, 取数组中的值通过substring截出,通过截的id值作为条件查询数据,查询到的数据有可能是 条记录,所有想通过游标...
  • 我想用mysql存储过程获取外键数据,然后通过out输出来。结果发现就能获取一条记录,不知道怎么去获取条。麻烦各位帮忙看下。 存储过程代码: CREATE PROCEDURE empCusState( in riqi date,out rname varchar...
  • MySQL存储过程

    万次阅读 多人点赞 2022-01-26 16:43:19
    MySQL5.0版本开始支持存储过程,存储过程就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法,存储过就是数据库SQL与层层面的代码封装与重用 特性 1.有输入输出参数,可以声明变量,...
  • 编写mysql存储过程,循环的查询到表结构相同的张表记录并将结果表合并输出。可以查询天也可查询单天 直接实例代码与注释 CREATE PROCEDURE tableData1(in sTime VARCHAR(255),in eTime VARCHAR(255)) BEGIN #...
  • 存储过程(无参,多个输入参数多个输出参数存储过程:  1、减少编译次数  2、简化操作  3、减少了变异次数减少了和数据库的链接次数,提高效率  关于存储过程的方法:  1、删除存储过程  DROP ...
  • MySQL存储过程及日期时间函数的用法

    千次阅读 2020-10-16 15:43:32
    二、存储过程2.1存储过程的优点2.2创建存储过程2.3 in表示传入参数 前言 一、日期时间函数 MySQL 也支持日期时间处理,提供了很处理日期和时间的函数。一些常用的日期时间函数 字符串函数 描述 curdate() 返回...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 306,759
精华内容 122,703
关键字:

mysql存储过程多个参数

mysql 订阅