WEB开发网
开发学院数据库MySQL mysql存储过程写法-动态参数运用 阅读

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

 2009-11-18 15:53:44 来源:WEB开发网   
核心提示:--删除drop procedure if exists up_common_select--创建CREATEPROCEDURE `up_common_select`(in t_name varchar(50))begindeclare v_sql varchar(500);set v_sql= concat('

--删除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会释放,!

Tags:mysql 存储 过程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接