Моя хранимая процедура имеет 4 параметра: 3 строки в качестве входных данных и одну строку в качестве вывода.Вызов внешней хранимой процедуры AS400 из C# с выходным параметром
using (OdbcConnection cn = ODBC.Instance.AmulibConnection)
{
cn.Open();
using (OdbcCommand cm = cn.CreateCommand())
{
cm.CommandText = "CALL RET_IMPL_STS('?','?','?','?')";
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add("@P1", OdbcType.Char).Value = "1";
cm.Parameters["@P1"].Size = 1;
cm.Parameters["@P1"].Direction = ParameterDirection.Input;
cm.Parameters.Add("@P2", OdbcType.Char).Value = "ABC";
cm.Parameters["@P2"].Size = 15;
cm.Parameters["@P2"].Direction = ParameterDirection.Input;
cm.Parameters.Add("@P3", OdbcType.Char).Value = "DEF";
cm.Parameters["@P3"].Size = 6;
cm.Parameters["@P3"].Direction = ParameterDirection.Input;
cm.Parameters.Add("@P4", OdbcType.Char);
cm.Parameters["@P4"].Size = 5;
cm.Parameters["@P4"].Direction = ParameterDirection.Output;
cm.Prepare();
cm.ExecuteNonQuery();
string result = cm.Parameters["@P4"].Value.ToString();
return result;
}
}
Я получаю следующее сообщение об ошибке:
Additional information: ERROR [HY000] [IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0469 - IN, OUT, or INOUT not valid for parameter 4 in procedure RET_IMPL_STS in *N.
Что такое правильный синтаксис для выходного параметра?
вы пробовали https: // MSDN.microsoft.com/en-us/library/system.data.parameterdirection(v=vs.110).aspx параметр inout или возвращаемого типа – danny117
Есть ли у вас ответ? Если нет, нам, вероятно, нужно будет знать, как хранится процесс proc, чтобы определить, почему SQL0469 возвращается. – user2338816
Да, у меня есть. Это была проблема синтаксиса, см. Ответ ниже – ehh