Получение значения из функции 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;