我有一個調用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) – 2011-03-08 22:31:15