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

Posted 雪化山河

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 动态传入表名参数的存储过程写法相关的知识,希望对你有一定的参考价值。

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 动态传入表名参数的存储过程写法的主要内容,如果未能解决你的问题,请参考以下文章

mysql 存储过程 动态表名

mysql存储过程 将传入的参数用作为表名 执行时提示错误 Table 'asteriskcdrdb.tbname' doesn't exist

sql server存储过程如何动态生成表名

MySQL-存储过程动态执行sql

mysql存储过程把字段作为传入参数

在android中动态创建选项卡并使用传入的参数加载片段