C#调用oracle存储过程

本文详细介绍了如何在Oracle中创建过程存储,并通过C#进行调用,包括创建表、包、存储过程及数据操作,以及使用Oracle连接与C#实现存储过程的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一、Oracle方面

1.创建Oracle过程存储

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

CREATEOR REPLACE PACKAGE MultiRefCursorsAS

  TYPE test_cursorISREF CURSOR ;

  Procedure getRecord (p_cursorINOUT test_cursor);

END MultiRefCursors;

/

 

3)  创建存储过程

createor replace package body MultiRefCursorsas

procedure getRecord( p_cursorINOUT test_cursor)is

v_sqlvarchar2(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();
        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值