C# 存储过程的递归限制为0
当我试图调用c#中的存储过程时。这是回报: 例程delete\u medikalislem超过了递归限制0(由max\u sp\u recursion\u depth变量设置) 删除medikalislem程序:C# 存储过程的递归限制为0,c#,mysql,C#,Mysql,当我试图调用c#中的存储过程时。这是回报: 例程delete\u medikalislem超过了递归限制0(由max\u sp\u recursion\u depth变量设置) 删除medikalislem程序: DELETE FROM medikal WHERE islem_id = p_id; SET max_sp_recursion_depth=255; 存储参数: 名称:p_id,类型:VARCHAR,长度:25 using (MySqlConnection conne
DELETE FROM medikal WHERE islem_id = p_id;
SET max_sp_recursion_depth=255;
存储参数:
名称: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();
}
}
I使用删除后触发器:
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
如何修复它?这只是SQL对递归性的抱怨 你必须明确地告诉它递归可以有多少层 在程序开始时添加以下内容:
DELETE FROM medikal WHERE islem_id = p_id;
SET max_sp_recursion_depth=255;
这可能会有所帮助。我想知道你是否真的触发了一个DB触发器(可能是一个删除触发器),或者类似的,你是否在代码中多次同时调用代码?其他用户是否登录到同一数据库?