У меня есть функция SQL, определенная следующим образом:
create or replace function func_cmap_unit_test
(what varchar2)
return varchar2 as
begin
return 'hello ' || what || '!';
end func_cmap_unit_test;
Я тестировал в SQL Developer, и она отлично работает:
select portal_ops.func_cmap_unit_test('world') from dual;
У меня есть следующее C# код:
Command.CommandText = funcName;
Command.CommandType = CommandType.StoredProcedure;
Command.Parameters.Add(
new OracleParameter
(
"Output"
, TypeMapping[typeof(T)]
//, OracleDbType.Clob
, ParameterDirection.ReturnValue
)
);
foreach ((string name, object value) param in spParams)
{
Command.Parameters.Add(param.name, param.value);
}
if (Command.Connection.State == ConnectionState.Closed)
{
Command.Connection.Open();
}
Command.ExecuteNonQuery();
return (T)Command.Parameters[0].Value;
Проблема в том, что Command.ExecuteNonQuery
продолжает сбой при
ORA-06502: PL / SQL: цифра c или ошибка значения: символ слишком маленький строковый буфер
Как вы видите в закомментированном коде, когда я переключил OracleDbType
на Clob
, ExecuteNonQuery
прошел. Я озадачен, почему это не сработает для OracleDBType
. Любая помощь с благодарностью.