mysql存储过程写法—动态参数运用

 --删除

双击代码全选

1

drop procedure if exists up_common_select

  --创建

双击代码全选

1

2

3

4

5

6

7

8

9

10

11

12

13

14

CREATE PROCEDURE `up_common_select`

  (

   in t_name varchar(50)

  )

  begin

   declare v_sql varchar(500);

   set v_sql= concat(‘select * from ‘,t_name);

   select v_sql;

--注意:prepare(预处理)execute stmt using @var,只能跟@var变量,declare和传入的变量不行!!!

   set @v_sql=v_sql;

   prepare stmt from @v_sql;

   EXECUTE stmt ;

   deallocate prepare stmt;

  end;

  --调用

双击代码全选

1

call up_common_select(‘admin_authority‘);

  注意事项

  1 mysql5.0.13之后支持在存储过程中调用prepare

  2 prepare stmt from ‘select * from ?‘; (错)

  mysql5.0.24,prepare尚不支持 表名做变量!

  解决方案:用 contat()函数,组合字符串

  3 execute stmt [using @var,@var2]

  必须是@var形式的变量,传入的参数变量,declare变量不行

  4. deallocate prepare stmt; 显式的释放prepare,如果不释放,mysql会释放,!

时间: 2024-11-07 00:01:23

mysql存储过程写法—动态参数运用的相关文章

关于mysql存储过程创建动态表名及参数处理

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 最近游戏开始第二次内测,开始处理操作日志,最开始把日志放到同一个表里面,发现一天时间,平均100玩家在线,操作记录就超过13万条,决定拆表,按照日期来保存日志,每天的日志存到一个表里面,然后定期把老的数据导出来备份后删掉. 具体思路是写日志的时候,根据当前的时间决定插入到当天的表里面,如表不存在则创建一个新的表,表名里面带上当天的日期.这就涉及到需要在存储过程里面动态创建一个跟日期相关的表.mysql不

MySQL存储过程实现动态执行SQL

--存储过程名和参数,参数中in表示传入参数,out标示传出参数,inout表示传入传出参数 create procedure p_procedurecode(in sumdate varchar(10)) begin declare v_sql varchar(500); --需要执行的SQL语句 declare sym varchar(6); declare var1 varchar(20); declare var2 varchar(70); declare var3 integer; -

编程开发之--Oracle数据库--存储过程使用动态参数绑定(3)

1.动态参数绑定,可以实现动态的执行不同的sql --创建包 create or replace PACKAGE MYPACKAGE AS type empcursor is ref cursor; procedure queryEmpList(dno in number,empList out empcursor); END MYPACKAGE; --创建包体 create or replace PACKAGE BODY MYPACKAGE AS procedure queryEmpList(

mysql存储过程中字符串参数单引号

注意:存储过程中单引号  ,四个单引号 SET @sql = CONCAT('select user_id into ',m_user_id,' from go_user where mobile =','''',p_user_name,'''',' AND password=','''',p_password,'''');

mysql 存储过程执行异常,参数不是出参

执行存储过程时,出现如下错误,一般都是因为调用用户没有对应操作权限导致. Parameter number 1 is not an OUT parameter 检查用户对应权限 show grants for [email protected]%;如果没有对应 execute,alter routine,create routine权限,请root用户登录进行授权操作. 授权: grants execute ,alter routine,create routine to [email prot

MySQL存储过程(带输入参数)实例

DROP TABLE IF EXISTS `CUSTOMERS`; CREATE TABLE CUSTOMERS ( `id` INT ( 11 ) NOT NULL AUTO_INCREMENT,-- ID `cust_num` INT ( 11 ),-- 客户编号 `company` VARCHAR ( 20 ),-- 公司名称 `cust_rep` INT ( 11 ),-- 雇员 `credit_limit` DECIMAL ( 16, 2 ),-- 信用限额 PRIMARY KEY (

mysql存储过程讲解

1.数据库存储过程:简单滴说,存储过程就是存储在数据库中的一个程序. 2..数据库存储过程作用: 第一:存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快. Html代码   第二:存储过程可以接受参数.输出参数.返回单个或多个结果集以及返回值.可以向程序返回错误原因. 第三:存储过程运行比较稳定,不会有太多的错误.只要一次成功,以后都会按这个程序运行. 第四:存储过程主要是在服务器上运行,减少对客户机的压力. 第五:存储过程可以包含程序流.逻辑以及对数据库的查询.同时可以实体封装和隐藏

第12章 mysql 存储过程

2015-10-24 目录 参考资料 [1] 唐汉明.深入浅出MySQL 数据库开发.优化与管理维护(第2版)[M].北京:人民邮电出版社,2014 [2] Schwartz.高性能MySQL(第3版)[M].北京:电子工业出版社,2013 [3] 范德兰斯.MySQL开发者SQL权威指南 [M].北京:机械工业出版社,2008 [4] Forta.MySQL必知必会 [M].北京:人民邮电出版社,2009 [5] Chapter 20 Stored Programs and Views [6]

MySQL 存储过程传参之in, out, inout 参数用法

存储过程传参:存储过程的括号里,可以声明参数. 语法是 create procedure p([in/out/inout] 参数名  参数类型 ..) in :给参数传入值,定义的参数就得到了值 out:模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程(在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值) inout:调用者还可以通过 inout 参数传递值给存储过程,也可以从存储过程内部传值给调用者 如果仅仅想把数据传给 MySQL 存储过