【问题标题】:Recursive limit 0 for stored procedure [duplicate]存储过程的递归限制 0 [重复]
【发布时间】:2019-02-11 15:45:02
【问题描述】:

当我尝试在 c# 中调用存储过程时。是返回:

例程 delete_medikalislem 超出递归限制 0(由 max_sp_recursion_depth 变量设置)

delete_medikalislem 程序:

DELETE FROM medikal WHERE islem_id = p_id;

存储参数: 名称:p_id,类型:VARCHAR,长度:25

       using (MySqlConnection connect = new MySqlConnection(connectionString))
           {
             using (MySqlCommand cmd = new MySqlCommand(mw.db_name+ ".delete_medikalislem", connect))
                 {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("p_id", mw.medikalislem[0]);
                    connect.Open();
                    cmd.ExecuteNonQuery();
                    connect.Close();
                 }
            }

我在删除触发器后使用:

BEGIN

DECLARE tl_ integer default 0;
DECLARE usd_ integer default 0;
DECLARE eur_ integer default 0;
DECLARE gbp_ integer default 0;
DECLARE toplam_ integer default 0;

SELECT tl, usd, eur, gbp INTO tl_, usd_, eur_, gbp_ FROM medikalfirmalar WHERE isim = OLD.medikal_isim;
DELETE FROM medikal_caritahsilat WHERE islem_id = OLD.islem_id;
    IF (OLD.birim='TL') THEN
    SET toplam_= tl_ - OLD.tutar;
    UPDATE medikalfirmalar SET tl = toplam_ WHERE isim = OLD.medikal_isim;
    END IF;
    IF (OLD.birim='USD') THEN
    SET toplam_= usd_ - OLD.tutar;
    UPDATE medikalfirmalar SET usd = toplam_ WHERE isim = OLD.medikal_isim;
    END IF;
    IF (OLD.birim='EUR') THEN
    SET toplam_= eur_ - OLD.tutar;
    UPDATE medikalfirmalar SET eur = toplam_ WHERE isim = OLD.medikal_isim;
    END IF;
    IF (OLD.birim='GBP') THEN
    SET toplam_= gbp_ - OLD.tutar;
    UPDATE medikalfirmalar SET gbp = toplam_ WHERE isim = OLD.medikal_isim;
    END IF;
END

我该如何解决?

【问题讨论】:

  • 这可能会有所帮助。 stackoverflow.com/questions/29111791/…
  • 我想知道您是否真的在触发数据库触发器(可能是删除触发器)或类似的
  • 您是否从您的代码中同时多次调用该代码?其他用户是否登录到同一个数据库?

标签: c# mysql


【解决方案1】:

这只是 SQL 抱怨递归。

您必须明确告诉它递归可以进行多少层。

在程序开始时添加:

SET max_sp_recursion_depth=255;

【讨论】:

    猜你喜欢
    • 2011-05-02
    • 2015-08-08
    • 2013-11-13
    • 2021-02-03
    • 2015-05-20
    • 2010-10-30
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    相关资源
    最近更新 更多