【问题标题】:SQL Stored Procedure error by updating更新导致 SQL 存储过程错误
【发布时间】:2018-06-14 09:57:13
【问题描述】:

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

也许你们能帮帮我?

【问题讨论】:

  • 您在 Products 表上有一个触发器,该触发器正在触发自身或其他链接在一起的触发器。
  • 你没有递归调用你的过程,所以Products表上必须有一个触发器。你能把这个触发器的代码也显示一下吗?
  • @EzLo 这是一个触发器,谢谢 :)

标签: c# sql stored-procedures


【解决方案1】:

查看您目前提供的代码看起来不错。然而,错误是这样说的——在某个地方,一个存储过程正在调用另一个存储过程,然后一次又一次地......太多次了。这也可能意味着有 1 个存储过程调用自身的次数过多。

所以提供的代码没有显示这种行为,所以我建议在别处寻找。正如 cmets 中提到的,一个很好的查看位置是 Products 表上的触发器。当您尝试更新触发器时,它可能会运行,这可能是问题的根源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 2019-01-06
    • 2015-12-21
    • 2014-02-05
    • 2023-01-12
    相关资源
    最近更新 更多