1. 程式人生 > >C#呼叫ORACLE儲存過程返回結果集

C#呼叫ORACLE儲存過程返回結果集

Oracle中scott使用者下建立儲存過程:

(注:從9i開始有了sys_refcursor這種型別,在以前的Oracle版本中需要使用REF CURSOR,並且還需放在一個程式包中)

create or replace procedure sp_getdept

(result out sys_refcursor)

as

begin

open result for select * from dept;

end;

/

 

 

===================================================

.net環境下(用的WINDOWS程式,WEB基本相同;環境為VS2005

==記著先新增引用System.Data.OracleClient

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using

 System.Data.OracleClient;

 

namespace WindowsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

      

        private void Form1_Load(object sender, EventArgs e)

        {

            OracleConnection con = new OracleConnection("server=orcl;uid=scott;pwd=tiger");

            OracleCommand cmd = new OracleCommand("sp_getdept",con);

            cmd.CommandType = CommandType.StoredProcedure;

            OracleParameter p1 = new OracleParameter("result"OracleType.Cursor);

            p1.Direction = System.Data.ParameterDirection.Output;

            cmd.Parameters.Add(p1);

            OracleDataAdapter da = new OracleDataAdapter(cmd);

            DataSet ds = new DataSet();

            da.Fill(ds);

            this.dataGridView1.DataSource = ds.Tables[0];

        }

    }

}