我在SQL Server 2008中遇到条件SQL脚本的问题。
当我单独运行每个命令时,一切正常,我成功更新了我的数据库
但是当我将所有内容分成一个命令时,我会收到错误:
Msg 102,Level 15,State 1,Line 3
';'附近的语法不正确。Msg 207,Level 16,State 1,Line 1
列名称'sAdvertTypeCode'无效。Msg 102,Level 15,State 1,Line 2
'end'附近的语法不正确。
所以我尝试了没有分号';'
错误是:
Msg 102,Level 15,State 1,Line 3
')'附近的语法不正确。Msg 207,Level 16,State 1,Line 1
列名称'sAdvertTypeCode'无效。Msg 102,Level 15,State 1,Line 2
'end'附近的语法不正确。
我的剧本:
IF COL_LENGTH('TechnicalDialogue', 'sAdvertTypeCode') IS NULL
begin
ALTER TABLE TechnicalDialogue ADD sAdvertTypeCode varchar(40) ;
go
UPDATE TechnicalDialogue SET sAdvertTypeCode = 'advert.type.broadcast' ;
go
Select * FROM TechnicalDialogue;
end
我对SQL Server没有太多经验,所以我有点困惑。
答案 0 :(得分:3)
GO不是一个SQL语句。它是command used in the client to execute batches of SQL,所以你不能在BEGIN / END中间拥有它。 GO将从脚本开始或最后一次GO发送到服务器执行所有内容,因此服务器看到开始但没有结束。 - Matt Gibson 26分钟前