分享
 
 
 

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

王朝oracle·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

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 tempNumfrom WebSite_Info where Name = name_ and ID<id_;

if tempNum 0 then

flag:=3;

end if;

select count(id) into tempNumfrom 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

SelectId, Name, Url, Folder_Name, Desccms, Char_Name,

DB_Address, DB_User, DB_PassWord, DB_Name, DB_ConnString, HttpRoot

From WebSite_Inf

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=天数

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有