簡體   English   中英

如何選擇INTO tableB,其名稱為@tableB * FROM @tableA?

[英]How to SELECT INTO tableB which name is @tableB * FROM @tableA?

我正在創建一個存儲過程,該過程必須創建一個表,該表的名稱取決於輸入變量。 對於臨時結果,我聲明了一個表變量:

declare @tableA TABLE(
column1,
column2,
..
)

輸出表名稱取決於用戶的輸入,因此我聲明了另一個變量

declare @tableB varchar = ...

最后,臨時結果必須存儲到名稱為@tableB的表中,因此在存儲過程中,我嘗試編寫以下語句:

declare @sql varchar(max)
set @sql = 'SELECT * INTO ' + @tableB + ' FROM @tableA'
exec(@sql)

這是不正確的。 有誰知道如何將值從表變量插入到名稱為變量的表中?

您不能在此處使用表變量,請嘗試使用臨時表。 創建表#tableA(...

有關更多信息: 鏈接文本

創建表#A(c1 int,c2 int);

插入#A值(1,2);

插入#A值(3,4);

聲明@sql varchar(max);

聲明@tableB sysname ='## tableB';

設置@sql ='SELECT * INTO'+ @tableB +'FROM #A';

打印@sql;

exec(@sql);

從## tableB選擇*;

假設@tableB已經存在,首先要嘗試的是:

SET @sql =
    'INSERT
    (
        col1,
        col2
    )
    INTO ' + @tableB + ' 
    SELECT 
    (
        col1, 
        col2
    )
    FROM
        @tableA'

未經語法檢查,請當心!

如果@tableB不存在,為什么它的名稱需要來自用戶?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM