存储过程执行报错:多部分标识符'Order.Number_Order'无法绑定
解决存储过程中的多部分标识符绑定错误
你的问题很清晰——查询里引用了Order表的字段,但完全没把Order表加入到查询的表连接逻辑里,数据库自然找不到这些字段的绑定关系,才会抛出The multi-part identifier could not be bound错误。
错误根源拆解
你原存储过程的WHERE子句写了:
where [Order].Number_Order=od.ID_Order and [Order].[Location]='PRODUCTION'
但你的FROM/JOIN部分只涉及OdredDetails、ItemQuantity和item三个表,根本没引入Order表,SQL Server无法解析[Order].Number_Order这类标识符的归属。
修正后的存储过程
你需要把Order表通过JOIN关联进来,这里用INNER JOIN关联OdredDetails和Order表(通过ID_Order字段)即可,修正后的代码如下:
Create Proc Get_Order_Production AS SELECT i.Name_Item, od.ID_Order, od.Project, od.Length, od.Width, od.Quantity, od.Weight, od.Supplier, od.GDS_Name, od.GDS_Date, od.WorkshopName, od.WorkshopDate, od.ReservedQty FROM OdredDetails od INNER JOIN ItemQuantity iq ON iq.ID_ItemQte = od.ID_ItemQte INNER JOIN item i ON i.ID_Item = iq.ID_Item -- 新增JOIN逻辑,引入Order表并关联 INNER JOIN [Order] o ON o.Number_Order = od.ID_Order WHERE o.[Location] = 'PRODUCTION'
额外优化说明
- 给
Order表加了别名o,既避免和SQL关键字ORDER冲突,也让代码更简洁易读; - 把原WHERE里的表关联条件移到JOIN子句中,这是更规范的写法,能让关联逻辑和过滤逻辑更清晰;
- 注意到你写的
OdredDetails可能是OrderDetails的拼写错误,如果是笔误建议同步修正,不过这不是当前报错的直接原因。
内容的提问来源于stack exchange,提问作者M.Bouabdallah
相关产品推荐
相关产品推荐

