2011-03-08 5 views
3

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 

답변

1

이 솔루션은 Schadd on MIDRANGE-L

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

감사해야합니다.

1

당신이 그것은 OUT 매개 변수라고 불리는데, RPG가 parms를 처리하는 방식 때문에 실제로는 INOUT 매개 변수 여야합니다. create proc를 INOUT으로 변경하고 C#에서 관련 변경을 수행하면 어떻게됩니까?

+0

아니요, 수정하지 못했습니다. INOUT은이 경우 햄버거에만 좋습니다. : 0) –

0

그리고 out 매개 변수를 nvarchar (1)로 변경하고 sproc을 변경하면 어떨까요? N 유형은 iDB2Char 유형과 일치합니까?

+0

비슷한 것은 내가 다음에 시도해야 할 것입니다. 아이디어를 가져 주셔서 감사합니다. 나는 알파를 반환하고 무슨 일이 일어나는지를 볼 것입니다. –