'@ItemID'附近的语法不正确

时间:2013-01-18 10:41:28

标签: sql stored-procedures sql-update

我不确定用两个更新语句编写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   

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

应该只是将声明移到begin下面,因为这需要在SP中声明。

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

答案 2 :(得分:0)

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

accepted answer的主要断言是错误的,它与DECLARE语句有关。以下情况很好:

create procedure ABC
as
declare @ID int
begin
    select @ID = object_id from sys.objects
end