无法检索出从Oracle存储过程PARAMS在C#
这里是我的存储过程(制作简单,试图找出问题,因此,所有我现在做的是设置OUT参数,):无法检索出从Oracle存储过程PARAMS在C#
程序DequeuePPLPlatformMsg ( MSGTYPE OUT VARCHAR2, msgBody OUT VARCHAR2) IS BEGIN
msgType := 'TESTTYPE';
msgBody := 'TESTBODY';
END DequeuePPLPlatformMsg;
这里是我的C#代码来调用存储过程,并试图获得在OUT参数,值:
OConn = new OracleConnection();
OConn.ConnectionString = "Password=mypw; User ID=myid; Data Source=devdb;";
OConn.Open();
OComm = new OracleCommand(StoredProc, OConn);
OComm.CommandType = System.Data.CommandType.StoredProcedure;
OComm.Parameters.Add("msgType", OracleDbType.Varchar2, 255, System.Data.ParameterDirection.Output);
OComm.Parameters.Add("msgBody", OracleDbType.Varchar2, 255, System.Data.ParameterDirection.Output);
int Result = OComm.ExecuteNonQuery();
OConn.Close();
String msgType = OComm.Parameters["msgType"].Value.ToString();
String msgBody = OComm.Parameters["msgBody"].Value.ToString();
当我查看参数中的值时,它们包含空字符串。
任何想法?谢谢!!
对不起,这里是详细信息...
这是该存储过程:
程序DequeuePPLPlatformMsg(MSGTYPE OUT VARCHAR2,msgBody OUT VARCHAR2)方面开始
msgType := 'TESTTYPE';
msgBody := 'TESTBODY';
END DequeuePPLPlatformMsg;
这是C#代码:
OConn = new OracleConnection();
OConn.ConnectionString = "Password=mypw; User ID=myid; Data Source=devdb;";
OConn.Open();
OComm = new OracleCommand(StoredProc, OConn);
OComm.CommandType = System.Data.CommandType.StoredProcedure;
OracleParameter msgTypeParam = new OracleParameter("msgType", OracleDbType.Varchar2);
msgTypeParam.Direction = System.Data.ParameterDirection.Output;
msgTypeParam.Value = "";
msgTypeParam.Size = 255;
OComm.Parameters.Add(msgTypeParam);
OracleParameter msgBodyParam = new OracleParameter("msgBody", OracleDbType.XmlType);
msgBodyParam.Direction = System.Data.ParameterDirection.Output;
OComm.Parameters.Add(msgBodyParam);
int Result = OComm.ExecuteNonQuery();
OConn.Close();
String msgType = msgTypeParam.Value.ToString();
MSGTYPE是的String.Empty
谢谢!
您是否尝试过按价值访问它?
Dim retValParam As New OracleClient.OracleParameter("p_retVal", OracleClient.OracleType.VarChar)
retValParam.Direction = ParameterDirection.Output
retValParam.Size = 100
retValParam.Value = ""
command.Parameters.Add(retValParam)
command.ExecuteNonQuery()
retVal = retValParam.Value
McArthey你是最棒的!谢谢!!! – 2013-03-08 15:59:34
很高兴帮助。这就是我们在这里。哦,那个,还有upvotes。 ;)如果您发现它有用,请继续并将其标记为此。谢谢,欢迎来到*! – McArthey 2013-03-09 02:59:06
这已经神秘地停止了工作,我回到了我开始的地方... – 2013-06-27 18:12:13
这是一个新问题? – McArthey 2013-06-28 16:15:58