Получение значения из функции SQL с использованием ParameterDirection

Это функция SQL:

create or replace FUNCTION "TEMPXML"
(
 ID IN NUMBER
)
RETURN CLOB IS
val CLOB;
BEGIN
 val:=null;
 BEGIN
  SELECT TEMPID INTO val FROM TEMPDATA WHERE TempdataID=I;
  exception
  when no_data_found then
   null;
 end;
return val;
END TEMPXML;

В C# я использую Parameter.ReturnValue, но возвращаемое значение всегда DBNull, и я получаю исключение Не удалось привести объект типа 'System.DBNull' к типу 'System.String'

sqlCmdSelectReports.Parameters.Add(new OleDbParameter("@xmldata", OleDbType.LongVarChar)).Direction = ParameterDirection.ReturnValue;
sqlCmdSelectReports.ExecuteNonQuery();
String xmlValue = (String)sqlCmdSelectReports.Parameters["@xmldata"].Value;

Последняя строка вызывает исключение. Я использую неправильный код в C#, или функция SQL неправильно закодирована?

1 ответ

Решение

Похоже, что вы просто получаете ноль обратно из базы данных, что не совсем неожиданно (no_ata_found, так далее)

Просто проверьте это; один из нескольких способов:

string xmlValue = sqlCmdSelectReports.Parameters["@xmldata"].Value as string;
Другие вопросы по тегам