中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
C#中使用Oracle 存储过程笔记 2004.11
作者:未知 时间:2004-12-16 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

C#中使用Oracle 存储过程笔记

 

1.         调用包含out/ in out类型参数的存储过程

存储过程:

CREATE OR REPLACE PROCEDURE "SITE_EDITSITEDATAEXIST"  

 (id_ number,

name_ varchar2,

httpRoot_ varchar2,

flag out integer )//out 只具备输出功能 in out 为输入/输出型

as

tempNum integer;

begin 

    flag:=0;

    select count(id) into tempNum  from WebSite_Info where Name = name_ and ID<>id_;

  

    if tempNum > 0 then  

        flag:=3;   

    end if;

    select count(id) into tempNum  from WebSite_Info where HttpRoot = HttpRoot_ and ID<>id_;

  

    if tempNum > 0 then  

        flag:=4;   

    end if; 

   

commit;

end ;

/

调用方法:

 

OracleParameter retPar = new OracleParameter(channelId, OracleType.Number);

    retPar.Direction = ParameterDirection.Output;//此处和存储过程中的类型匹配

//如果为in out 类型 此处应声//明InputOutput

OracleParameter[] param = new OracleParameter[ 2 ]

{

      new OracleParameter(subjectId, OracleType.VarChar, 60)

  };       

param[ 0 ].Value = 0;

 

OracleHelper.ExecuteReader( OracleHelper.CONN_STRING_BASE, CommandType.StoredProcedure,

"site_EditSiteDataExist" ,param);

//有返回值时必须使用ExecuteReader方法

                object val = param[ 3 ].Value;           

        return int.Parse( val.ToString() );

 

 

2.         存储过程返回记录集

存储过程必须写在包中,再调用.

包的写法:

CREATE OR REPLACE PACKAGE pkg_cms

AS

    TYPE myrctype IS REF CURSOR; 

  

    PROCEDURE site_GetSiteData(Id_ number, p_rc OUT myrctype);

   

END pkg_cms;

/

CREATE OR REPLACE PACKAGE BODY pkg_cms

AS

    PROCEDURE site_GetSiteData(Id_ number,p_rc OUT myrctype)

    IS       

    BEGIN       

          OPEN p_rc FOR

            Select  Id, Name, Url, Folder_Name, Desccms, Char_Name,

            DB_Address, DB_User, DB_Password, DB_Name, DB_ConnString, HttpRoot

            From WebSite_Info

            WHERE id=Id_;  

    END site_GetSiteData;         

 END pkg_cms;

/

 

调用:

                     OracleParameter[] param = new OracleParameter[ 2 ]

                {                                                      

                    new OracleParameter(PARM_ID_, OracleType.Number, 8),

new OracleParameter("p_rc", OracleType.Cursor, 2000, ParameterDirection.Output, true, 0, 0, "",DataRowVersion.Default, Convert.DBNull)//此处为包体中声明的游标类型

};

param[ 0 ].Value = siteID;

 

return OracleHelper.ExecuteReader(OracleHelper.CONN_STRING_BASE, CommandType.StoredProcedure,"pkg_cms.site_GetSiteData", param);

//调用时候先写包名

 

 

3.         Oracle存储过程中其它的方法

字符串操作

       INSTR(STR,Maker)//取字符串中字符的位置

       SUBStr(str,beginnum,len)//取子串

       To_char()//将数字转到字符串

       ||  //拼串   相当于+

       LENGTH(Oldword) //取字符串长度

时间类

    to_date('dateStr','YYYY-Mi-DD')//字符串转成date”’YYYY-MM-DD’”

    Date1-date2=天数




共同交流 欢迎指正  MSN:yutao728@hotmail.com

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有