我试图使用带参数的存储过程,在本例中为OrderID。 但我收到错误:'超出最大存储过程,函数,触发器或视图嵌套级别(限制32)。'
我的C#方法:
using (SqlCommand cmd = new SqlCommand("UpdateStock", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@OrderID", SqlDbType.Int).Value = OrderId;
cmd.ExecuteNonQuery();
}
我的存储过程:
CREATE PROCEDURE [dbo].[UpdateStock] @OrderID int
AS
BEGIN
UPDATE Products SET Stock = Stock -1 FROM Products INNER JOIN
OrderDetails ON
Products.ProductId = OrderDetails.ProductID WHERE OrderDetails.OrderID =
@OrderID
END
GO
也许你们可以帮助我?
答案 0 :(得分:0)
查看您目前提供的代码看起来很好。然而,错误是说 - 某个地方,存储过程正在调用另一个存储过程,然后一次又一次地重复..太多次。它也可能意味着有一个存储过程调用自己太多次了。
所以提供的代码没有显示这种行为所以我建议寻找其他地方。正如评论中所提到的,一个好看的地方是Products表上的触发器。当您尝试更新它时可能会运行触发器,这可能是问题的根源。