SQLRPGLE 프로그램을 호출하는 저장 프로시 듀어가 있습니다. 디버거에서 확인하고 반환 값을 예상대로 보내면 프로그램이 제대로 실행 중입니다. 대신 cmd.Parameters["@ISMATCH"].Value = {}
을 볼 때 반환되는 내용. 내가 뭔가 잘못하고있는 것 같아. 뭐가 될수 있었는지?iSeries 저장 프로시 듀어 호출 RPG 프로그램이 프로그램에 값을 리턴하지 않습니다.
저장 프로 시저 :
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
아니요, 수정하지 못했습니다. INOUT은이 경우 햄버거에만 좋습니다. : 0) –