我试图在mySQL Workbench中创建一个存储过程。目标是清理/标准化位于要加载的临时表中的字段。这是代码段。。。缺少许多更新行。
CREATE DEFINER=`root`@`localhost` PROCEDURE `Address`(TBL VARCHAR(50))
BEGIN
SET @table_name = TBL;
UPDATE table_name SET AD1 = REPLACE(AD1,"P.O. BOX ","BOX ");
UPDATE table_name SET AD1 = REPLACE(AD1,"POBOX ","BOX ");
UPDATE table_name SET AD1 = REPLACE(AD1,"P O BOX ","BOX ");
END
问题:函数无法识别该表。
错误代码:
146'kalo.table_name'不存在
我究竟做错了什么?
最佳答案
UPDATE table_name SET AD1 = REPLACE(AD1,"P.O. BOX ","BOX ");
^--missing @
即使您记得将
@
放在其中,也无法使用var替换SQL关键字/标识符。您需要使用动态SQL,例如手动构建查询字符串,然后exec
该字符串。没有其他方法可以将您的@table_name
字符串转换为实际的标识符。