下面给出一个具体例子:

在model数据库中创建如下表:

DROP TABLE IF EXISTS `model`.`model_director`;

CREATE TABLE `model`.`model_director` (

`model_id` int(11) NOT NULL,

`director_id` int(11) NOT NULL,

PRIMARY KEY (`model_id`,`director_id`),

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED;

创建存储过程:

DELIMITER $$

DROP PROCEDURE IF EXISTS `testINVarchar` $$

CREATE PROCEDURE `testINVarchar`(IN inTableName VARCHAR(128),OUT inNUM INT)

BEGIN

SET @tmpNUM = 0;

SET @SQLStr=CONCAT('SELECT COUNT(*) INTO

@tmpNUM FROM ',inTableName );

PREPARE stmt from @SQLStr;

EXECUTE stmt;

SET inNUM =

@tmpNUM;

END $$

DELIMITER ;

不能直接将数据INTO到OUT变量中,还有另一个要注意的问题是,这里不能使用DECLARE声名的局部变量,因为使用CONCAT的时候会将其变成字符串!所以一定要使用SET来声名变量。

--错误做法1(OUT变量直接在SQL语句中使用)

DELIMITER $$

DROP PROCEDURE IF EXISTS `testINVarchar` $$

CREATE PROCEDURE `testINVarchar`(IN inTableName VARCHAR(128),OUT inNUM INT)

BEGIN

SET @SQLStr=CONCAT('SELECT COUNT(*) INTO ',

inNUM ,' FROM ',inTableName );

PREPARE stmt from @SQLStr;

EXECUTE stmt;

END $$

DELIMITER ;

--错误做法2(使用DECLARE声名变量是不可以在CONCAT中使用!)

DELIMITER $$

DROP PROCEDURE IF EXISTS `testINVarchar` $$

CREATE PROCEDURE `testINVarchar`(IN inTableName VARCHAR(128),OUT inNUM INT)

BEGIN

DECLARE tmpNUM = 0;

SET @SQLStr=CONCAT('SELECT COUNT(*) INTO

tmpNUM FROM ',inTableName );

PREPARE stmt from @SQLStr;

EXECUTE stmt;

SET inNUM = tmpNUM;

END $$

DELIMITER ;

mysql存储过程局部变量使用_MySQL存储过程使用输出变量相关推荐

  1. mysql 存储过程 定义数组_MySql存储过程

    Mysql进阶 存储过程 1 什么是存储过程 1.存储过程,带有逻辑的sql语句 2.之前的sql没有条件判断,没有循环 3.存储过程带上流程控制语句(if while) 2 存储过程特点 1)执行效 ...

  2. mysql存储过程list参数_mysql存储过程教程(1)

    MySQL存储过程 1.1         CREATE  PROCEDURE  (创建) CREATE PROCEDURE存储过程名(参数列表) BEGIN SQL语句代码块 END 注意: 由括号 ...

  3. mysql存储过程注释方法_mysql存储过程 详细注释

    原文:https://my.oschina.net/u/3582142/blog/1581929 delimiter $$ /* 重新定义mysql结束符,而不再是分号是结束符 */ create p ...

  4. mysql的游标处理_mysql 存储过程、游标及逐行处理的配合使用

    1. 数据准备 +----+------+--------+ | id | name | price1 | +----+------+--------+ | 1 | 大米 | 5 | | 2 | 鸡蛋 ...

  5. mysql 存储过程简单使用_mysql存储过程的简单使用教程

    存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程 c ...

  6. mysql 多个游标_mysql 存储过程中使用多游标

    mysql的存储过程可以很方便使用游标来实现一些功能,存储过程的写法大致如下: 先创建一张表,插入一些测试数据:DROP TABLE IF EXISTS netingcn_proc_test; CRE ...

  7. mysql存储过程 简书_MySQL存储过程

    在本节中,您将逐步学习如何在MySQL中编写和开发存储过程. 首先,我们向您介绍存储过程的概念,并讨论何时使用它. 然后,展示如何使用过程代码的基本元素,如创建存储过程的语句,if-else,case ...

  8. mysql 存储过程建表_MySQL 存储过程创建表

    创建 CREATE PROCEDURE  Pro_IsExistTable(ableName varchar(100),out outputParam int) BEGIN set @csql=con ...

  9. mysql 存储过程 out 用处_mysql存储过程 OUT or INOUT argument 3 for routine

    mysql存储过程出现: OUT or INOUT argument 3 for routine gotask.UserLogin is not a variable or NEW pseudo-va ...

最新文章

  1. python编程词汇-基本 Python 词汇
  2. JUnit中@Test的运行顺序
  3. c++学习笔记之构造函数
  4. linux shell编程之菜单选择(二)
  5. Django(part34)--一对多映射
  6. css小技巧: select的css控制
  7. pandas DateTime funcs
  8. Selenium API-WebElement 方法
  9. 住150平米以上的房子是怎样一种体验?
  10. 代码提示(支持3.X和4.X)—ArcGIS API forJavaScript
  11. linux mattrib 命令详解
  12. 全国城市邮编数据库 全国省市区邮编 全国城市邮编数据大全
  13. linux下动态库的符号冲突、隐藏和强制优先使用库内符号
  14. 实景三维重建大雁云与三青鸟达成战略合作提供自助式实景三维建模全流程服务
  15. 2022云和恩墨大讲堂·苏州站成功举办,论道数智化时代下国产数据库的技术创新与实践
  16. Commerzbank和Sparkasse开始支持Apple Pay
  17. vue实现词云图(echarts/Highcharts)
  18. 第九届蓝桥杯单片机完整程序
  19. stp实验心得_STP 实验
  20. LabVIEW(十五):右键菜单添加创建VI模版

热门文章

  1. linux 迁移mysql目录_linux默认mysql迁移目录
  2. 台达vfd一ⅴe变频说明书_PLC运动控制实例解析:PLC与变频器系统
  3. 2021年高考成绩什么时候查询辽宁,2021年辽宁高考成绩什么时候几点可以查
  4. 用 js判断 一个数是否是素数(质数)_小学五年级下册数学公式打印版,孩子寒假预习用的上!...
  5. oracle 最小权限,oracle低权限下获取shell
  6. revit二次开发概念_BIM百科 | Revit二次开发入门--创建一个简单的程序
  7. 70进货卖100利润是多少_服装批发利润大揭秘!让你拿货砍价心里有个底
  8. android权限申请方法,安卓开发Android6+权限申请管理用户拒绝权限一键解决方案...
  9. mysql登录跳转不了_Session过期后实现自动跳转登录页面
  10. eclipse插件开发(二) 简易4页签编辑器(源码 | 设计 | JS | CSS)配色