通过更新SQL存储过程错误

时间:2018-06-14 09:57:13

标签: c# sql stored-procedures

我试图使用带参数的存储过程,在本例中为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

也许你们可以帮助我?

1 个答案:

答案 0 :(得分:0)

查看您目前提供的代码看起来很好。然而,错误是说 - 某个地方,存储过程正在调用另一个存储过程,然后一次又一次地重复..太多次。它也可能意味着有一个存储过程调用自己太多次了。

所以提供的代码没有显示这种行为所以我建议寻找其他地方。正如评论中所提到的,一个好看的地方是Products表上的触发器。当您尝试更新它时可能会运行触发器,这可能是问题的根源。