动态SQL添加新列并使用它

时间:2015-07-31 06:38:16

标签: sql-server sql-server-2008 tsql

有没有办法在动态SQL中添加列并选择/更新新列?

CREATE TABLE #test (Id int primary key)

exec('
BEGIN TRAN

    ALTER TABLE #test ADD [Id_copy] int null
    --GO -- Cannot do GO in exec, otherwise below statement should work normally

    SELECT * FROM #test -- [Id_copy] shows up
    SELECT [Id_copy] FROM #test -- Error: Invalid column name ''Id_copy''.
    UPDATE #test SET Id_copy = Id -- Error: Invalid column name ''Id_copy''.

COMMIT TRAN
')

DROP TABLE #test

1 个答案:

答案 0 :(得分:1)

您可以使用2种不同的EXEC

CREATE TABLE #test (Id int primary key)

EXEC('
BEGIN TRAN
    ALTER TABLE #test ADD [Id_copy] int null
COMMIT TRAN
')

EXEC('
BEGIN TRAN
    SELECT * FROM #test
    SELECT [Id_copy] FROM #test
    UPDATE #test SET Id_copy = Id
COMMIT TRAN
')

DROP TABLE #test