使用c#调用oracle存储过程获取存储过程参数信息
来源:互联网 发布:ai人工智能程序下载 编辑:程序博客网 时间:2024/06/06 09:05
本文介绍如何获取存储过程的参数信息,并介绍如何在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;
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#中使用call调用oracle存储过程并获取out参数值
- C#调用oracle存储过程
- C#调用oracle存储过程
- C# 调用oracle存储过程
- C#调用Oracle存储过程
- C#调用oracle存储过程
- C#调用Oracle存储过程
- c#调用oracle存储过程
- C#调用oracle存储过程
- C#调用Oracle存储过程
- C#调用ORACLE存储过程
- C#调用Oracle存储过程
- C#调用Oracle存储过程
- C#调用Oracle存储过程
- oracle 在C#中的调用存储过程参数问题
- 关于C#调用存储过程,带输出参数,存储过程
- Oracle 存储过程 调用带有 out 参数的存储过程
- 反谈i-mate JASJAR试用手记
- 动态业务工作流引擎Superflow研究之四---流程直通车技术
- asp中用msxml的xmlhttp读取网页源文件提示系统未找到指定的资源与防火墙
- 给所有需要建议的 Internet 开发者一些建议
- 汇编 中关于补码的问题
- 使用c#调用oracle存储过程获取存储过程参数信息
- Monash University Digital Perception Laboratory
- 数据库编码设计
- c#中使用call调用oracle存储过程并获取out参数值
- 嵌入式开发中的一些细节续(dlmu2001)
- c#中利用pl/sql匿名块和游标获取多个结果集
- c#中里有pl/sql匿名块和绑定变量在执行insert后获取当前序列值
- Eclipse 运行命令行参数大全
- 关于ASP+和xml的比较的问题