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

下面列举如何在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)
            {
            }

转载于:https://www.cnblogs.com/zzyyll2/archive/2008/05/23/1205606.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值