2013-02-27 60 views
-1

假設我將一個表數據值複製到另一個表中。將@var添加到SQL插入...值(SELECT ... [here] FROM ...)

INSERT INTO T1(field_list) VALUES(SELECT field_list FROM T2)

而不是插入第二表的一列而我提供的變量。這就像

INSERT INTO T1(field_list) VALUES (SELECT field_list, @variable FROM T2)

考慮到有是列數沒有錯誤,而不是提供一些靜態的文字我提供一個變量名。

如果我將@variable更改爲某些靜態文本,但它不起作用,但不是@variable。

如何在這種情況下提供@variable?

+0

你是什麼意思它不工作?你是否收到錯誤,或者插入了錯誤的數據? – cjk 2013-02-27 10:57:27

+0

你應該沒有問題,請發佈你遇到的確切的錯誤消息。 – 2013-02-27 11:05:11

+0

我插入的字段是NULL! – 2013-02-27 11:21:27

回答

0

你必須首先聲明@Variable

DECLARE @variable varchar(255) 
SET @variable = 'myColumn' 
EXECUTE (' SELECT *, ' + @variable + ' FROM myTable') 
+0

我的變量已被聲明! – 2013-02-27 11:25:44

0
INSERT INTO T1(field_list) 
SELECT field_list, @variable FROM T2 

應該沒有任何問題的工作,除非你的表不允許空和你有相同數量的值那麼多的列定義爲插入在插入聲明。

正如你所說的變量被聲明,它不應該是一個問題。

編輯:

@Variable可能是您從前端或在您的SP分配給變量靜態文本通過動態文本。它應該適用於所有情況。

INSERT INTO T1(FIELD1,FIELD2) 選擇Field2,@variable FROM T2

+0

使它工作!問題是函數沒有返回散列!當我將@var更改爲某些靜態文本時,它工作正常! – 2013-02-27 11:47:05