c#調用Oracle存儲過程返回的遊標結果代碼實例

之前對Oracle的接觸都未牽涉到這一塊的,剛開始確實不知道怎麼處理,網上也查了寫資料,但是都比較散,所以還是整理一下吧,僅供大家參考:

1、oracle中存儲過程如下:

 

CREATE OR REPLACE PROCEDURE UP_dzSURFACE_EBGJSY(
TKALA VARCHAR2 ,  RC1 out PK_Var.RC )
AS
    sSQL  varchar2(2000) ;
begin
    sSQL :=  ' select
                 TKALA as "舊編號" ,
     GCEABG as "取樣深度" , "LOAD1" as "加荷" ,
     GCDLAG as "a" , GCDKBD as "Es" , GCDLAQ as "回彈指數Cs"
     from tbdzEBGJSY  where  Upper(TKALA)='''|| Upper(TKALA) || ''' ' ;

    Open RC1 for sSQL;
    return;
end UP_dzSURFACE_EBGJSY;

 

2、c#代碼如下:

//創建oracle參數

 OracleParameter[] sqlParme = new OracleParameter[2]

            //參數1  
            sqlParme[0] = new OracleParameter("RC1", OracleType.Cursor);
            sqlParme[0].Direction = ParameterDirection.Output;
            sqlParme[1] = new OracleParameter("TKALA", OracleType.VarChar);
            sqlParme[1].Direction = ParameterDirection.Input;
            sqlParme[1].Value = aHoleOldNum;

 //從存儲過程中獲取dataTable數據源
        private DataTable DBExecStoredProcedure(string storeureName, OracleParameter[] sqlParme)
        {
            try
            {
                //使用微軟的ORACLE訪問接口                 
                if (DBHelper.G_pDBConn.State == ConnectionState.Closed)//獲取數據連接
                    DBHelper.G_pDBConn.Open();
                OracleCommand oraCmd = new OracleCommand(storeureName, DBHelper.G_pDBConn);
                oraCmd.CommandType = CommandType.StoredProcedure;
                oraCmd.Parameters.Clear();//先清空  
                foreach (OracleParameter parme in sqlParme)
                {
                    oraCmd.Parameters.Add(parme);
                }
                DataTable table = new DataTable();

                DateTime BegTime = System.DateTime.Now;
                OracleDataAdapter da1 = new OracleDataAdapter(oraCmd);//取出數據
                da1.Fill(table);
                return table;
            }
            catch (Exception ex)
            {
                MessageBox.Show("執行存儲過程失敗:"+ex.Message,"調試");
                return null;
            }
            finally {
                DBHelper.G_pDBConn.Close();
            }
        }

    最後,大致的過程就是這樣了,希望對大家有幫助吧!

 

發佈了66 篇原創文章 · 獲贊 5 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章