首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

Mysql 存储过程处置动态参数

2013-03-28 
Mysql 存储过程处理动态参数--删除     drop procedure if exists up_common_select  --创建  CREATE PROC

Mysql 存储过程处理动态参数

--删除     drop procedure if exists up_common_select  --创建  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;  --调用     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会释放,!

热点排行