gpt4 book ai didi

c# - 存储过程错误 "argument 1 for routine ... is not a variable or NEW pseudo-variable in BEFORE trigger"

转载 作者:行者123 更新时间:2023-11-29 06:52:28 25 4
gpt4 key购买 nike

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `Get_Next_Processing_Video`(
OUT out_IDVideo INT ,
OUT out_YoutubeIDVideo VARCHAR(15)
)
BEGIN

DECLARE a INT;
DECLARE b VARCHAR(15);

set a = 0;
set b = "ciao";

SELECT NP.IDVideo, NP.YoutubeIDVideo INTO a, b
FROM next_processing AS NP
LIMIT 1;

UPDATE Video AS V
SET V.SchedulingFlag = TRUE
WHERE IDVideo = a;

SET out_IDVideo = a;
SET out_YoutubeIDVideo = b;

END

MySQL 返回:

OUT or INOUT argument 1 for routine youtubedb.Get_Next_Processing_Video is not a variable or NEW pseudo-variable in BEFORE trigger.

问题是什么?代码似乎是正确的。

这是调用过程的 C# 代码:

using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["AxWaveConnection"].ToString()))
{
try
{
conn.Open();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

MySqlCommand cmd = new MySqlCommand("Get_Next_Processing_Video", conn);
cmd.CommandType = System.Data.CommandType.StoredProcedure;

cmd.Parameters.Add(new MySqlParameter("out_IDVideo", idVideo));
cmd.Parameters.Add(new MySqlParameter("out_YoutubeIDVideo", youtubeId));

try
{
cmd.ExecuteNonQuery();
}
catch (Exception e)
{

}

conn.Close();
}

最佳答案

我认为问题出在您对该过程的调用中。

对于不支持 OUT 参数的 MySQL 连接器版本,正常的解决方法是使用 MySQL 用户变量来保存返回值,然后运行查询以获取那些值变量。

首先,执行存储过程,让MySQL将OUT参数的值放入变量中:

CALL `Get_Next_Processing_Video`(@IDVideo, @YoutubeIDVideo);

请注意,这些变量不是命令参数;它们是保存在 MySQL session 中的变量。要在调用过程后立即使用相同的 MySQL 连接获取这些变量的值:

SELECT @IDVideo, @YoutubeIDVideo ;

然后处理该查询的结果集,就像您希望返回一行的任何其他 SELECT 语句一样。


更新:

对于支持 OUT 参数的较新版本的 MySQL 连接器,我认为您需要通过设置成员属性来指定这些参数是 OUT 参数:

cmd.Parameters["out_IDVideo"].Direction = ParameterDirection.Output;
cmd.Parameters["out_YoutubeIDVideo"].Direction = ParameterDirection.Output;

正如我之前指出的...

在不支持 OUT 参数的旧版 MySQL 连接器中,解决方法是使用 MySQL 变量作为参数来调用该过程。从过程调用返回的值保留在 MySQL session 中。调用该过程后,我们将立即运行 SELECT 以检索用户变量的内容。

关于c# - 存储过程错误 "argument 1 for routine ... is not a variable or NEW pseudo-variable in BEFORE trigger",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14586745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com