2013-02-27 80 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