3

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
4

3 に答える 3

1

漠然と思い出しますが、これをOUTパラメーターと呼んでも、RPGがパラメーターを処理する方法のため、実際にはINOUTパラメーターである必要があります。create procをINOUTに変更し、C#で関連する変更を行うとどうなりますか?

于 2011-03-08T22:19:05.140 に答える
1

解決策は

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';

MIDRANGE-LのSchadに感謝します。

于 2011-03-09T16:38:06.167 に答える
0

また、outパラメーターをnvarchar(1)に変更し、sprocを変更するとどうなりますか。NタイプはiDB2Charタイプに対応していますか?

于 2011-03-09T10:04:40.880 に答える