码迷,mamicode.com
首页 > 数据库 > 详细

mysql 动态传入表名参数的存储过程写法

时间:2018-08-16 14:55:50      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:直接   参数   insert   写法   varchar   var   过程   动态   否则   

delimiter //
create procedure oneKey(in newName varchar(250),in oldName varchar(250),in idNum INT)
BEGIN	
	SET @sqlStmt = CONCAT(‘insert into ‘,newName,‘ (`name`,`age`,`sex`,`major`,`pass`,`photo`)
		select `name`,`age`,`sex`,`major`,`pass`,`photo` from ‘,oldName,‘ where id = ‘,idNum);
	PREPARE stmt FROM @sqlStmt;
	EXECUTE	stmt;
END;
//
delimiter ;

call oneKey(‘stu1‘,‘student‘,5);

begin,end中的sql语句,无法通过“+”号拼接字符串直接识别表名(where条件后的参数可以通过“+”号拼接,能识别!前提是不在concat()方法里面写!),所以需要使用 concat() 方法,在括号里面写sql语句,拼接处使用“,”逗号来拼接,同时切记一点:“拼接处要留有空格!!”比如 concat(‘insert into ‘) 这里into后要留有空格,否则无法正常识别传进来的表名!

mysql 动态传入表名参数的存储过程写法

标签:直接   参数   insert   写法   varchar   var   过程   动态   否则   

原文地址:https://www.cnblogs.com/xuehuashanghe/p/9487043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!