这是我在local string
上运行 SQL select语句的情况。
如果我为我的表运行正常的选择查询,那么它可以工作。
select * from tablesname
但如果我有以下案例:
declare @string nvarchar(400)
set @string = N'from tablesname'
现在如果我运行select * from @string
,它就无法按预期运行。
请建议我解决此问题,因为我只想以这种方式运行select语句。 如果我应该尝试其他方式,那么建议我。
谢谢, Tausif。
答案 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。