我是靠谱客的博主 孤独溪流,最近开发中收集的这篇文章主要介绍使用c#调用oracle存储过程获取存储过程参数信息,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文介绍如何获取存储过程的参数信息,并介绍如何在c#代码中使用ODP.NET调用oracle存储过程返回结果集:

1:创建包:

SQL> create or replace package FORP_PROC_INFO is
  2  
  3    -- Author  : zhanghaopeng
  4    -- Created : 2005-12-14
  5    -- Purpose : 获取存储过程参数信息
  6  
  7    TYPE type_cur IS REF CURSOR;     --定义游标变量用于返回记录集
  8  
  9    PROCEDURE get_porc_pram(
 10    proc_name in varchar2,            --过程名称
 11    v_cur out type_cur               --返回游标
 12    );
 13  
 14  end FORP_PROC_INFO;
 15  /

Package created

SQL>

2:创建包体:

 SQL> create or replace package body FORP_PROC_INFO is
  2  
  3  
  4   PROCEDURE get_porc_pram(
  5     proc_name in varchar2,            --过程名称
  6     v_cur out type_cur               --返回游标
  7   )
  8   AS
  9   v_SQL varchar2(1000);
 10  
 11   begin
 12  
 13    v_sql:=' SELECT argument_name PARAMETER_NAME, data_type TYPE_NAME,in_out PARAMETER_TYPE,CHAR_LENGTH CHARACTER_OCTET_LENGTH,DATA_PRECISION NUMERIC_PRECISION,DATA_SCALE NUMERIC_SCALE from   all_arguments WHERE object_id=( select object_id from all_objects where object_name=upper(trim(''' || proc_name || ''')))';
 14  
 15  
 16  
 17    open v_cur for v_sql;
 18  
 19  end  get_porc_pram;
 20  
 21  end FORP_PROC_INFO;
 22  /

Package body created

3.用c#代码调用过程获取过程参数信息:

        oracleConnection1.Open();
                string strSQL = @"forp_proc_info.get_porc_pram";

                Oracle.DataAccess.Client.OracleDataAdapter da = new Oracle.DataAccess.Client.OracleDataAdapter();
                Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand(strSQL,oracleConnection1);
                cmd.CommandType = CommandType.StoredProcedure;

    
                Oracle.DataAccess.Client.OracleParameter pram = new Oracle.DataAccess.Client.OracleParameter("proc_name",Oracle.DataAccess.Client.OracleDbType.Varchar2);
                pram.Value = "spo_addcontact";
                cmd.Parameters.Add(pram);


                Oracle.DataAccess.Client.OracleParameter pram1 = new Oracle.DataAccess.Client.OracleParameter("v_cur",Oracle.DataAccess.Client.OracleDbType.RefCursor);
                pram1.Direction = ParameterDirection.Output;
                cmd.Parameters.Add(pram1);
            
                da.SelectCommand = cmd;

                DataSet ds = new DataSet();

            

                da.Fill(ds);
                
                this.dataGrid1.DataSource=ds.Tables[0].DefaultView;

最后

以上就是孤独溪流为你收集整理的使用c#调用oracle存储过程获取存储过程参数信息的全部内容,希望文章能够帮你解决使用c#调用oracle存储过程获取存储过程参数信息所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部