gpt4 book ai didi

c# - 调用 RPG 程序的 iSeries 存储过程不向程序返回值

转载 作者:行者123 更新时间:2023-11-30 17:19:02 25 4
gpt4 key购买 nike

我有一个调用 SQLRPGLE 程序的存储过程。正如我在调试器中验证的那样,程序运行良好,并按预期发送了返回值。取而代之的是查看 cmd.Parameters["@ISMATCH"].Value = {} 时返回的内容。我猜我做错了什么。会是什么?

存储过程:

CREATE PROCEDURE "MPRLIB"."CHECKHOURS" (EMPLOYEEID DECIMAL(10 , 0), 
INOUT ISMATCH CHAR(1))
LANGUAGE RPGLE
PARAMETER STYLE SQL
NOT DETERMINISTIC
MODIFIES SQL DATA
SPECIFIC CHECKHOURS
NEW SAVEPOINT LEVEL
EXTERNAL NAME 'MPRLIB/MPRLRCHK';

我的方法:

    public bool IsValidTimesheet(int id)
{
bool isValid = false;

// Get the data from the iSeries
using (iDB2Connection conn = new iDB2Connection(ConfigurationManager.ConnectionStrings["IbmIConnectionString"].ConnectionString))
{
using (iDB2Command cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "LIB.CHECKHOURS";

cmd.Parameters.Add("@EMPLOYEEID", iDB2DbType.iDB2Decimal).Value = id;
cmd.Parameters.Add("@ISMATCH", iDB2DbType.iDB2Char).Direction = ParameterDirection.Output;
conn.Open();
cmd.ExecuteNonQuery();
isValid = (cmd.Parameters["@ISMATCH"].Value.ToString() == "1") ? true : false;
conn.Close();
}
}

return isValid;
}

我的RPG程序参数:

 D CHECKHOURS      PR                  extpgm('CHECKHOURS')
D id 10P 0
D isMatch 1A

最佳答案

我有一个模糊的记忆,尽管你称它为 OUT 参数,但由于 RPG 处理参数的方式,它实际上应该是一个 INOUT 参数。如果将 create proc 更改为 INOUT 并在 C# 中进行相关更改,会发生什么情况?

关于c# - 调用 RPG 程序的 iSeries 存储过程不向程序返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5238834/

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