我不确定用两个更新语句编写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
答案 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中声明。
答案 2 :(得分:0)
它会抱怨最后一个查询的最后一部分是什么,因为您忘记了第{5行} END
阻止BEGIN
。
accepted answer的主要断言是错误的,它与DECLARE
语句有关。以下情况很好:
create procedure ABC
as
declare @ID int
begin
select @ID = object_id from sys.objects
end