我有一个接受表名作为参数的程序。我的要求是找到对象是否存在于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.
答案 0 :(得分:0)
尝试这样的事情......
DECLARE @sqlQuery nvarchar(max);
declare @tableName sysname;
set @tableName = N'Person';
IF EXISTS (SELECT * FROM sys.tables WHERE name = @tableName)
BEGIN
PRINT 'Table Exists';
SET @sqlQuery = N'SELECT * INTO #temp FROM ' + QUOTENAME(@tableName) + N'; '
+ N' SELECT * FROM #temp;'
EXEC sp_executesql @sqlQuery;
END