Azure SQL Server创建存储过程遇SQL Error(102),求排查语法错误
问题排查与解决
嘿,这个问题其实一眼就能揪出根源——你的存储过程里UPDATE语句的语法写错了!
错误点对比分析
先看你报错的那段代码:
CREATE PROCEDURE sp_update_sync @sync_no varchar(50), @status INT AS BEGIN UPDATE dbo.table_sync SET sync_end_time = GETDATE() SET sync_status = @status WHERE sync_no = @sync_no END
这里你在UPDATE语句里连续写了两个SET关键字,这在SQL Server里是完全不符合语法规则的。而你能正常运行的存储过程,是在同一个SET下只更新单个字段,所以没有触发语法错误。
修正后的正确代码
当需要一次性更新多个字段时,必须在同一个SET子句里用逗号分隔各个字段的赋值操作,修正后的代码如下:
CREATE PROCEDURE sp_update_sync @sync_no varchar(50), @status INT AS BEGIN UPDATE dbo.table_sync SET sync_end_time = GETDATE(), -- 用逗号分隔多个字段的赋值 sync_status = @status WHERE sync_no = @sync_no END
报错原因解释
SQL Server解析UPDATE语句时,会认为第一个SET已经完成了字段更新的定义,紧接着出现的第二个SET就成了无意义的非法语法,所以会抛出“="附近语法不正确”的错误——它完全没预料到这里会突然出现第二个SET关键字。
这类小失误很容易在写紧凑的单行代码时忽略,把代码拆分成多行格式化后,就能更清晰地避免这类问题啦!
内容的提问来源于stack exchange,提问作者Saud Meethal
相关产品推荐
相关产品推荐

