0

既存のテーブルに列を追加し、その後、既存のレコードに適切な列の値を挿入する必要があります。単一のストアド プロシージャ内でこれを行う必要があります。

これまでのところ、次のものがあります (SQL Management studio は、既存のレコードに値を追加するために新しい列を見つけることができないと報告しています)。

    BEGIN
    ALTER TABLE tbl1
    ADD col_add int

    UPDATE tbl1
    SET [col_add]='value'
    WHERE col_pk = 1
    END

ALTER ステートメントと UPDATE ステートメントの間に「GO」キーワードを追加しようとしましたが、構文エラーが報告されます。

前もって感謝します。

4

2 に答える 2

2

解析中にテーブル名エラーが発生します。SSMS では、goバッチを分離するため機能します。ただし、ストアド プロシージャは常に 1 つのバッチです。

execまたはを使用sp_executesqlして、ストアド プロシージャ内で新しいラウンドの解析を強制できます。

exec ('UPDATE tbl1 SET [col_add]='value' WHERE col_pk = 1')
于 2013-04-26T12:20:11.183 に答える
2

「alter table」をコミットしてから更新を行う必要があると思います。また、更新もコミットすることを忘れないでください。

 BEGIN
  BEGIN TRAN
    ALTER TABLE tbl1
    ADD col_add date
COMMIT;
   BEGIN TRAN
    UPDATE tbl1
    SET [col_add]='value'
    WHERE col_pk = 1
COMMIT;
    END
于 2013-04-26T12:19:17.120 に答える