8

テーブルに新しい列を追加し、後からその列で作業するストアド プロシージャを 1 つ持つことはできますか? たとえば、次のストアド プロシージャがあります。

...

alter table tb1
add col1 varchar(1) null

insert into tb1(col1)
values ('Y')

と言うエラーが出ました

col1 は無効です。

4

2 に答える 2

14

後で値を挿入するのではなく、デフォルト値「Y」でテーブルを作成してみてください。

alter table tb1 add col1 varchar(1) not null DEFAULT ('Y')

ドキュメントGOに従って、テーブルを作成するには2行の間に必要です。GO

SQL Server ユーティリティは、GO を、Transact-SQL ステートメントの現在のバッチを SQL Server のインスタンスに送信する必要があるというシグナルとして解釈します。

GOただし、ストアド プロシージャにステートメントを含めることはできません。

編集

または、EXECステートメントを使用してコードを実行することもできます。

EXEC ('alter table tb1 add col1 varchar(1) null')
EXEC ('update tb1 set col1 = ''Y''')
于 2012-09-10T19:47:56.223 に答える