sql可以使用information_schema或sys.objects从参数返回表对象

时间:2015-03-07 20:49:51

标签: sql-server dynamic-sql information-schema

我有一个接受表名作为参数的程序。我的要求是找到对象是否存在于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.

1 个答案:

答案 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