【发布时间】:2013-03-28 15:07:58
【问题描述】:
为什么会出现这个错误?
CREATE DEFINER=`root`@`localhost` PROCEDURE `selectrecords`(tablename varchar(50))
begin
set @table_name=tablename;
set @sql_text=concat('Select * from @table_name');
prepare statement from @sql_text;
execute statement;
deallocate prepare statement;
end
错误:
....to use near '@table_name' at line 1
我的代码是正确的,但我不明白为什么......
【问题讨论】:
-
我不认为你可以在动态 sql 中使用变量作为表名。在甲骨文你肯定不能。我认为您必须连接,请参阅 JW 的回答
-
@Sebas:如果我使用 "delete frrom....where" 怎么办,JW 的回答还是可以接受的?
-
是的,我认为他几乎回答了你所有的问题。
-
我收到错误:“set @sql_text = concat('Delete from ', tablename, 'WHERE id = pid');” “pid int”--> 包含在参数中..任何帮助?
-
在WHERE前加一个空格