描述SQL Server中的临时表列

时间:2018-02-13 23:24:33

标签: sql-server

我有这个脚本:

CREATE TABLE #TempTable (Id int)

ALTER TABLE #TempTable ADD [IdKey] INT 
ALTER TABLE #TempTable ADD [ProviderName] NVARCHAR(100)

SELECT * 
FROM tempdb.sys.columns 
WHERE [object_id] = OBJECT_ID(N'tempdb..#TempTable');

我需要读取此临时表的列,并根据前一个临时表创建另一个临时表。 为什么当我选择tempdb.sys.columns时,ProviderName长度是200而不是100?

3 个答案:

答案 0 :(得分:1)

通过这个简单的查询,可以复制临时表结构:

SELECT *
INTO #NewTempTable
FROM #TempTable
WHERE 1 = 0

答案 1 :(得分:0)

使用它可以解决问题:

SELECT * FROM [tempdb]。[sys]。[dm_exec_describe_first_result_set](N' SELECT Id,[IdKey],[ProviderName] FROM#temptable',null,0);

答案 2 :(得分:0)

将临时表结构克隆到SQL Server中的新物理表

enter image description here

我们将看到如何在SQL Server中将临时表结构克隆到新的物理表。这适用于Azure SQL数据库和内部部署。

演示SQL脚本

public static void setWindowFlag(Activity activity, final int bits, boolean on) {
    Window win = activity.getWindow();
    WindowManager.LayoutParams winParams = win.getAttributes();
    if (on) {
        winParams.flags |= bits;
    } else {
        winParams.flags &= ~bits;
    }
    win.setAttributes(winParams);
}

方法1

IF OBJECT_ID('TempDB..#TempTable') IS NOT NULL
    DROP TABLE #TempTable;

SELECT 1 AS ID,'Arul' AS Names
INTO
#TempTable;

SELECT * FROM #TempTable;

enter image description here

方法2

SELECT * INTO TempTable1 FROM #TempTable WHERE 1=0;

EXEC SP_HELP TempTable1;

enter image description here