2013-03-08 70 views
0

這裏是我的存儲過程(製作簡單,試圖找出問題,因此,所有我現在做的是設置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(); 

當我查看參數中的值時,它們包含空字符串。

任何想法?謝謝!!

回答

1

對不起,這裏是詳細信息...

這是該存儲過程:

程序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

謝謝!

+0

這是一個新問題? – McArthey 2013-06-28 16:15:58

0

您是否嘗試過按價值訪問它?

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 
+0

McArthey你是最棒的!謝謝!!! – 2013-03-08 15:59:34

+0

很高興幫助。這就是我們在這裏。哦,那個,還有upvotes。 ;)如果您發現它有用,請繼續並將其標記爲此。謝謝,歡迎來到StackOverflow! – McArthey 2013-03-09 02:59:06

+0

這已經神祕地停止了工作,我回到了我開始的地方... – 2013-06-27 18:12:13