【发布时间】:2015-05-09 07:11:50
【问题描述】:
我有一个接受表名作为参数的过程。我的要求是查找对象是否存在于 information_schema 或 sys.object 中(哪个是有效的),然后返回表行。
这样可以返回完整的表对象吗?
declare @tableName nvarchar(250)
set @tableName = N'Person';
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @tableName)
BEGIN
PRINT 'Table Exists';
SELECT * from @tableName;
END
基本上我想将此结果存储在一个临时表中,然后从那里更新和删除记录。我要存储在临时表中的代码是:
DECLARE @sqlQuery nvarchar(4000);
SET @sqlQuery = 'SELECT * FROM ' + @tblName;
PRINT @sqlQuery;
insert INTO #TempTable
EXEC sp_executesql @sqlQuery;
SELECT * FROM #TempTable;
我在最后一行说 #TempTable undefined. 时出现错误
【问题讨论】:
-
你不能使用变量作为表名,你必须用 sp_executesql 或 exec 来做
-
你需要使用像
EXEC ('SELECT * FROM ' + quotename(@tableName));这样的动态SQL -
这样我无法将结果存储在临时表中。我更新了我的问题。请再看看。
标签: sql-server dynamic-sql information-schema