【发布时间】: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/…
-
我想知道您是否真的在触发数据库触发器(可能是删除触发器)或类似的
-
您是否从您的代码中同时多次调用该代码?其他用户是否登录到同一个数据库?