zoukankan      html  css  js  c++  java
  • c# 调用带有参数的存储过程方法--oracle【转载】

     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 raclecon = 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;

             }

    }

  • 相关阅读:
    HTTP 方法
    Nodejs 使用 bcrypt 库加密和验证密码
    Flutter 获取本地图片并剪切
    Flutter: 矩形边框
    [bzoj1385]Division expression
    项目中常用方法总结(将将DataTable数据集映射到实体对象)【转】
    hdu1010:Tempter of the Bone(dfs)
    hdu1010:Tempter of the Bone(dfs)
    BZOJ 2820 YY的GCD
    算法的封装与切换—策略模式(四)
  • 原文地址:https://www.cnblogs.com/happylyyer/p/4346584.html
Copyright © 2011-2022 走看看