SQL:为本地字符串变量运行select语句

时间:2012-08-16 07:27:21

标签: mysql sql

这是我在local string上运行 SQL select语句的情况。 如果我为我的表运行正常的选择查询,那么它可以工作。

select * from tablesname 

但如果我有以下案例:

declare @string nvarchar(400)

set @string = N'from tablesname'

现在如果我运行select * from @string,它就无法按预期运行。

请建议我解决此问题,因为我只想以这种方式运行select语句。 如果我应该尝试其他方式,那么建议我。

谢谢, Tausif。

1 个答案:

答案 0 :(得分:1)

假设您正在使用MySQL,因为您的问题已被标记,尽管此set @string = N'from tablesname'表明您正在使用MS SQL Server或其他内容:

SET @yourDynamicTablename = 'yourTable';
SET @sql = CONCAT('SELECT * FROM ', @yourDynamicTablename );
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

您可能希望将其放在存储过程中。

您的尝试无效,因为您无法从字符串中进行选择。要进一步阅读有关避免SQL注入攻击有用的预准备语句,请查看manual