c# 調用帶有參數的預存程序方法–oracle篇

來源:互聯網
上載者:User

1     由於交叉表的八個報表寫在sql中了,每個報表對應sql語句有300行之多,不能定義視圖,因為必須傳遞個參數,所以利用了預存程序實現。

 

首先,定義包,然後定義包體,在用.net調用產生資料集即可

.net調用oracle帶參數的預存程序,返回資料集

Oracle這個複雜一些,步驟如下:

在pl/sql中首先寫包的定義檔案

CREATE OR REPLACE PACKAGE ZHBB AS
    TYPE t_cursor IS REF CURSOR ;
Procedure ZH11 (rq IN char, io_cursor IN OUT t_cursor);

Procedure ZH12 (rq IN char, io_cursor IN OUT t_cursor);

END ZHBB;

其次寫包體的定義檔案

CREATE OR REPLACE PACKAGE BODY ZHBB AS

  Procedure ZH11(rq IN char, io_cursor IN OUT t_cursor) IS

    v_cursor t_cursor;

  BEGIN

    OPEN v_cursor FOR

Select * from aa where ny=rq;

  io_cursor := v_cursor;

  END ZH11;

Procedure ZH12 (rq IN char, io_cursor IN OUT t_cursor) IS

。。。。。

END ZH12;

.net調用方法:

   public static DataTable GetDataTable(string PackageName,string ProName,string connString,string rq)

         {

connString=” Provider= MSDAORA.1;User ID=xx;Data Source=xx;Password=xx;”

 //定義下新的連結方法,因為原來的驅動"OraOLEDB.Oracle"不能滿足需求,設定為"MSDAORA.1"

            OleDbConnection Oraclecon = new OleDbConnection(connString);

            Oraclecon.Open();

            OleDbCommand cmd = new OleDbCommand("{Call "+ PackageName +"."+ ProName +"(?, {resultset 0, io_cursor} )}", Oraclecon);

            cmd.Connection = Oraclecon;

            cmd.Parameters.Add("rq", OleDbType.VarChar, 8).Value = ""+ rq +"";

            OleDbDataAdapter da = new OleDbDataAdapter(cmd);

            DataTable dt = new DataTable();

            //DataSet ds = new DataSet();

            da.Fill(dt);

            Oraclecon.Close();

            Oraclecon.Dispose();

            return dt;

         }

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.