0

这是我在local string. 如果我为我的表运行正常的选择查询,那么它就可以工作。

select * from tablesname 

但如果我有以下情况:

declare @string nvarchar(400)

set @string = N'from tablesname'

现在,如果我运行select * from @string,它不会按预期工作。

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

谢谢,陶西夫。

4

1 回答 1

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 注入攻击也很有用,请查看手册

于 2012-08-16T07:44:20.137 回答