テーブルに新しい列を追加し、後からその列で作業するストアド プロシージャを 1 つ持つことはできますか? たとえば、次のストアド プロシージャがあります。
...
alter table tb1
add col1 varchar(1) null
insert into tb1(col1)
values ('Y')
と言うエラーが出ました
col1 は無効です。
テーブルに新しい列を追加し、後からその列で作業するストアド プロシージャを 1 つ持つことはできますか? たとえば、次のストアド プロシージャがあります。
...
alter table tb1
add col1 varchar(1) null
insert into tb1(col1)
values ('Y')
と言うエラーが出ました
col1 は無効です。
後で値を挿入するのではなく、デフォルト値「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''')