0

我不确定用两个更新语句编写 SP 是否正确。

我在“@ItemID”附近收到不正确的语法。你能建议我...我该如何解决这个问题。

CREATE PROCEDURE [dbo].[ComponentReplaceUSP](@ReplaceItem nvarchar(256) ,@Quantity decimal(28,12) ,@UOM nvarchar(30)) 

AS  
 DECLARE @ItemID INT    
BEGIN       

   Select @ItemID = ItemID  FROM [dbo].[Item] WHERE ItemName =  @ReplaceItem

    UPDATE Item    
      SET Item.ItemName = @ReplaceItem,
      Item.UOM = @UOM
      Where Item.ItemID =@ItemID    


      Update ItemBillOfMaterial
      Set ItemBillOfMaterial.UOM =@UOM,
          ItemBillOfMaterial.Quantity =@Quantity
          Where  ItemBillOfMaterial.CompItem= @ItemID   
4

3 回答 3

2

您的CREATE PROCEDURE查询需要END

CREATE PROCEDURE [dbo].[ComponentReplaceUSP](@ReplaceItem nvarchar(256) ,@Quantity decimal(28,12) ,@UOM nvarchar(30)) 
AS   
DECLARE @ItemID INT  
BEGIN           
   Select @ItemID = ItemID  FROM [dbo].[Item] WHERE ItemName =  @ReplaceItem
END
于 2013-01-18T10:44:51.663 回答
0

这应该只是将声明移动到开始下方的情况,因为这需要在 SP 中声明。

http://msdn.microsoft.com/en-us/library/ms187926.aspx

于 2013-01-18T10:45:58.793 回答
0

它会抱怨最后一个查询的最后一部分是什么,因为你忘记END了在第 5 行阻止你BEGIN

接受的答案是错误的,其主要断言与DECLARE陈述有关。以下是好的:

create procedure ABC
as
declare @ID int
begin
    select @ID = object_id from sys.objects
end
于 2013-01-18T10:46:57.607 回答