Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ParameterDirection从SQL函数获取值_C#_Oracle_Oledbconnection_Oledbparameter - Fatal编程技术网

C# 使用ParameterDirection从SQL函数获取值

C# 使用ParameterDirection从SQL函数获取值,c#,oracle,oledbconnection,oledbparameter,C#,Oracle,Oledbconnection,Oledbparameter,这是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;

这是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函数的代码是错误的?

看起来您只是从数据库中获取了一个空值,这并不完全出乎意料(
找不到数据
,等等)

检查一下;一种(多种)方法是:


异常的类型是什么,消息说什么?配置错误:tmpcore.dll:无法将类型为“System.DBNull”的对象强制转换为类型为“System.String”。在在我的第一篇文章中,最后一行代码是抛出异常
string xmlValue = sqlCmdSelectReports.Parameters["@xmldata"].Value as string;