C#調用oracle預存程序

來源:互聯網
上載者:User

一、Oracle方面

1.建立Oracle過程儲存

1)   建立表
create table users(usesNo number,userName varchar(50));
2)   建立包

CREATE OR REPLACE PACKAGE MultiRefCursors AS

   TYPE test_cursor IS REF CURSOR ;

   Procedure getRecord (p_cursor IN OUT test_cursor);

END MultiRefCursors;

/

 

3)   建立預存程序

create or replace package body MultiRefCursors as

procedure getRecord( p_cursor IN OUT test_cursor) is

v_sql varchar2(1000);

begin

 v_sql:='select * from users';

 open p_cursor for v_sql;

end;

end;

/
4)   添加資料

insert into users values(1,'ljp');

insert into users values(2,'dfa');

insert into users values(3,'dff');

insert into users values(1,'ljp');

insert into users values(2,'dfa');

insert into users values(3,'dff');

 

 二、  C#方面

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Data.OracleClient;

 

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

OracleConnection conn = new OracleConnection(@"Data Source=orcl;User ID=scott;Password=tiger;Unicode=True");

            conn.Open();

          

            OracleCommand cmd = new OracleCommand();

            cmd.Connection=conn;

            cmd.CommandType = CommandType.StoredProcedure;

 

            //調用預存程序查詢資料

            cmd.CommandText = "MultiRefCursors.getRecord";

            OracleParameter[] parameters = new OracleParameter[2];

//注意這裡的userNo,p_cursor參數名和類型號與預存程序裡面的一樣

            parameters[0] = new OracleParameter("userNo", OracleType.Int32);

            parameters[1] = new OracleParameter("p_cursor", OracleType.Cursor);

            parameters[0].Value = 3;

            parameters[0].Direction = ParameterDirection.Input;

            parameters[1].Direction = ParameterDirection.Output;

 

            foreach (OracleParameter parameter in parameters)

            {

                cmd.Parameters.Add(parameter);

            }

 

            OracleDataAdapter oda = new OracleDataAdapter(cmd);

            DataSet ds = new DataSet();

 

            try

            {

                oda.Fill(ds);

                if (ds.Tables[0] != null)

                {

                    foreach (DataRow dr in ds.Tables[0].Rows)

                    {

                        System.Console.WriteLine("userno:" + dr[0] + " username:" + dr[1]);

                    }

                }

            }

            catch (Exception ex)

            {

                System.Console.WriteLine(ex.Message);

            }

            finally

            {

                conn.Close();

            }

            System.Console.ReadKey();
        }

    }

}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.