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后要留有空格,否則無法正常識別傳進來的表名!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM