-1

假设我正在将一个表数据值复制到另一个表中。

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?

4

2 回答 2

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

除非您的表不允许 null 并且您要插入与 insert into 语句中定义的列相同数量的值,否则它应该可以正常工作。

正如你所说的变量被声明,它不应该是一个问题。

编辑:

@Variable 可以是从前端传递的动态文本,也可以是分配给 SP 中变量的静态文本。它应该适用于所有情况。

INSERT INTO T1(field1,field2) SELECT field2, @variable FROM T2

于 2013-02-27T11:34:15.953 回答
0

您必须首先声明@variable

DECLARE @variable varchar(255)
SET @variable = 'myColumn'
EXECUTE (' SELECT *, ' + @variable + ' FROM myTable' )
于 2013-02-27T11:02:14.367 回答