SSMS 17.6存储过程语法错误及标量变量未声明问题求解
解决SSMS 17.6中存储过程创建的语法错误
咱们一步步来搞定你遇到的这两个问题:
第一个错误:incorrect syntax near as expecting variable
这个错误的根源很简单——你在最后一个参数@Weight INT后面多写了一个逗号。SQL Server解析参数列表时,会认为逗号后面还应该有下一个参数定义,结果紧接着遇到了AS,自然就抛出语法错误了。
第二个错误:Must declare the scalar variable
这个错误是第一个语法错误引发的连锁反应:因为存储过程的创建语句本身有语法问题,SQL Server没法正确解析你定义的参数,所以会误以为这些变量没被声明。只要修复第一个问题,这个报错也会自动消失。
修正后的完整代码
USE Stock GO CREATE PROCEDURE Add_Item @Name VARCHAR(20), @Section INT, @Size INT, @Grade INT, @Weight INT -- 去掉了末尾多余的逗号 AS BEGIN -- 建议加上BEGIN/END包裹逻辑,让代码结构更清晰 INSERT INTO [Item] ([Name_Item], [ID_SectionType], [SectionSize_Item], [ID_Grade], [Weight]) VALUES (@Name, @Section, @Size, @Grade, @Weight) END GO
额外小建议
- 尽量用
BEGIN和END把存储过程的逻辑代码包裹起来,后续如果要添加更多语句(比如错误处理、日志插入),代码结构会更清晰,也不容易出现语法问题。 - 检查一下参数类型和目标表字段的类型是否完全匹配,比如
@Name VARCHAR(20)要确保[Name_Item]字段的长度足够,避免插入时出现字符串截断的错误。
内容的提问来源于stack exchange,提问作者M.Bouabdallah
相关产品推荐
相关产品推荐

