(转)C#中调用ORACLE的PACKAGE里方法和存储过程的应用

本文详细介绍了如何在 C# 中调用 ORACLE 的 PACKAGE,包括创建 ORACLE PACKAGE 的 SPEC 和 BODY 部分,并通过 C# 代码实例展示了如何调用 PACKAGE 中的功能和存储过程。

转自http://www.cnblogs.com/aosiyelong/archive/2011/07/13/2105444.html

下面列举如何在C#中调用ORACLE的PACKAGE的东西,主要包括PACKAGE的方法和存储过程

一,首先在ORACLE里建立如下PACKAGE
PACKAGE分SPEC和body两部分.
1.SPEC是声明部分.

CREATE OR REPLACE PACKAGE
FirstPage
is

type outlist
is ref cursor ;

Procedure p_get(
maxrow
in number , minrow in number , return_list
out outlist );

function f_get( str in varchar2 ) return varchar2 ;

END
FirstPage;
/
2.BODY是功能实现部分

CREATE OR REPLACE package body
FirstPage
is

Procedure p_get(
maxrow
in number , minrow in number , return_list
out outlist )
is
begin

open
return_list
for
select * from ( select a. * ,rownum rnum
from
IPS_WL_INNOLUXPN a
where rownum <= maxrow)
where
rnum
>= minrow;
end
;

Function f_get( str in varchar2 )
return varchar2

is
str_temp
varchar2 ( 200 ) : = ' Good Luck! ' ;
begin
str_temp
:
=
str_temp
|| str ;
return
str_temp;
end f_get;


end
FirstPage;
/
以上,就在ORACLE里面建立了一个名字叫FIRSTPAGE的PACKAGE,这个PACKAGE里面有一个名叫P_GET的存储过程,它有3个参数,一个是maxrow,minrow是输入,result_list是个CURSOR,用来存放传回的数据集

二.C#部分代码:

string connStr = " Data
Source=E4MT;user id=mnt;password=mnt
" ;
OracleConnection orcn
= new
OracleConnection(connStr);

// C#
調用Package中的Function

OracleCommand cmd = new
OracleCommand(
" FIRSTPAGE.f_get " ,orcn);
cmd.CommandType
=
CommandType.StoredProcedure;
OracleParameter p1
= new
OracleParameter(
" str " ,OracleType.VarChar, 10 );
p1.Direction
=
ParameterDirection.Input;
p1.Value
= " Andy " ;
OracleParameter
p2
=
new
OracleParameter(
" result " ,OracleType.VarChar, 100 );
p2.Direction
=
ParameterDirection.ReturnValue;
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
orcn.Open();
cmd.ExecuteNonQuery();
orcn.Close();

// C#調用Package中的Procedure
cmd = new
OracleCommand(
" FIRSTPAGE.p_get " ,orcn);
cmd.CommandType
=
CommandType.StoredProcedure;
p1
= new
OracleParameter(
" maxrow " ,OracleType.Number);
p1.Direction
=
ParameterDirection.Input;
p1.Value
= 50 ;
p2
=
new
OracleParameter(
" minrow " ,OracleType.Number);
p2.Direction
=
ParameterDirection.Input;
p2.Value
= 10 ;
OracleParameter p3
= new
OracleParameter(
" return_list " ,OracleType.Cursor);
p3.Direction
=
ParameterDirection.Output;
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
cmd.Parameters.Add(p3);

DataTable
dt
=
new
DataTable();
OracleDataAdapter da
= new
OracleDataAdapter(cmd);
da.Fill(dt);

foreach (DataRow row
in
dt.Rows)
{
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值