【发布时间】:2021-05-25 10:01:52
【问题描述】:
我正在使用 1 个输入参数调用存储过程 finish_record。 我在这里阅读了有关该主题的所有相关问题,但我没有看到我这边的错误... 但它在某个地方:-)
这里的程序:
CREATE DEFINER=`root`@`localhost` PROCEDURE `finish_record`(
IN recordId INT
)
BEGIN
UPDATE bnirolovani.record r INNER JOIN(
select Sum(SumError) as Total, count(RollID) as Rolls, sum(Lenght) as Lenght, sum(ExtraMeter) as ExtraMeter from bnirolovani.roll where RecordID=recordId)
i on r.RecordID = recordId SET r.SumError = i.Total, r.SumReels=i.Rolls,r.SumProduced=i.Lenght, r.SumExtraMeter=ExtraMeter;
UPDATE record r
INNER JOIN
(SELECT
SUM(Lenght) AS Total
FROM
bnirolovani.roll
WHERE
RecordID = recordId AND Quality = 0) i ON r.RecordID = recordId
SET
r.QualityE = i.Total;
UPDATE record r
INNER JOIN
(SELECT
SUM(Lenght) AS Total
FROM
bnirolovani.roll
WHERE
RecordID = recordId AND Quality = 1) i ON r.RecordID = recordId
SET
r.QualityII = i.Total;
UPDATE record r
SET
DateProducedF = NOW()
WHERE
r.RecordID = recordID;
END
这里是我的 C# 代码
private void FinishRecord(int recordID)
{
try
{
string con = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (MySqlConnection conection = new MySqlConnection(con))
{
using (MySqlCommand cmd = new MySqlCommand("finish_record", conection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("recordId", MySqlDbType.Int32).Value=recordID;
conection.Open();
cmd.ExecuteNonQuery();
conection.Close();
}
}
}
catch (Exception ex)
{
throw;
}
有人可以帮助我哪里出错了吗?我没看到:-( 谢了
【问题讨论】:
-
那么,“有什么问题”?如果SP只选择输入,结果是..? IE。产生这个“问题”的最小失败案例是什么,是遇到的“问题”吗?
-
过程是否从 SQL Server Management Studio 正确运行? ID 是主键吗?密钥是否已经在数据库中?更新仅适用于数据库中的主键。如果 key 不在数据库中,则需要使用 Insert。
-
Hi 程序在 MySQL 工作台中正确运行。在 VS 中失败并出现异常:“数据为空。不能使用空值调用此方法或属性。” @jdwengspan>
-
您在工作台中使用的 ID 值是否与 c# 相同?您使用工作台测试时使用的数据库连接字符串吗?
标签: c# mysql stored-procedures