zoukankan      html  css  js  c++  java
  • C#调用oracle存储过程

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

        }

    }

     

  • 相关阅读:
    MySQL 操作命令梳理(5)-执行sql语句查询即mysql状态说明
    MySQL 主从同步(5)-同步延迟状态考量(seconds_behind_master和pt-heartbea)
    MySQL 操作命令梳理(4)-中文乱码问题
    WebAssembly 介绍
    Android MVP
    Android Data Binding(数据绑定)用户指南
    认知心理学告诉你什么才是高效学习
    Android O新特性和行为变更总结zz
    音视频不同步问题的原因和解决方案
    当程序员写不出代码了,该怎么办?
  • 原文地址:https://www.cnblogs.com/gisdream/p/2251437.html
Copyright © 2011-2022 走看看