oracle存储过程37247

oracle存储过程37247

ID:14770833

大小:45.00 KB

页数:15页

时间:2018-07-30

oracle存储过程37247_第1页
oracle存储过程37247_第2页
oracle存储过程37247_第3页
oracle存储过程37247_第4页
oracle存储过程37247_第5页
资源描述:

《oracle存储过程37247》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、oracle存储过程372472010-01-28Oracle存储过程实例文章分类:数据库createorreplaceprocedureGetRecords(name_outoutvarchar2,age_ininvarchar2)asbeginselectNAMEintoname_outfromtestwhereAGE=age_in;end;createorreplaceprocedureinsertRecord(UserIDinvarchar2,UserNameinvarchar2,User

2、Ageinvarchar2)isbegininsertintotestvalues(UserID,UserName,UserAge);end;首先,在Oracle中创建了一个名为TEST_SEQ的Sequence对象,SQL语句如下:createsequenceTEST_SEQminvalue100maxvalue999startwith102incrementby1nocache;语法应该是比较易懂的,最小最大值分别用minvalue,maxvalue表示,初始值是102(这个数字是动态变化的,

3、我创建的时候设的是100,后因插入了2条数据后就自动增加了2),increment当然就是步长了。在PL/SQL中可以用test_seq.nextval访问下一个序列号,用test_seq.currval访问当前的序列号。定义完了Sequence,接下来就是创建一个存储过程InsertRecordWithSequence:--这次我修改了test表的定义,和前面的示例不同。其中,UserID是PK。createorreplaceprocedureInsertRecordWithSequence(U

4、serIDoutnumber,UserNameinvarchar2,UserAgeinnumber)isbegininsertintotest(id,name,age)--插入一条记录,PK值从Sequece获取values(test_seq.nextval,UserName,UserAge);/*返回PK值。注意Dual表的用法*/selecttest_seq.currvalintoUserIDfromdual;endInsertRecordWithSequence;为了让存储过程返回结果集,必

5、须定义一个游标变量作为输出参数。这和SqlServer中有着很大的不同!并且还要用到Oracle中“包”(Package)的概念,似乎有点繁琐,但熟悉后也会觉得很方便。关于“包”的概念,有很多内容可以参考,在此就不赘述了。首先,我创建了一个名为TestPackage的包,包头是这么定义的:createorreplacepackageTestPackageistypemycursorisrefcursor;--定义游标变量procedureGetRecords(ret_cursoroutmycurs

6、or);--定义过程,用游标变量作为返回参数endTestPackage;包体是这么定义的:createorreplacepackagebodyTestPackageis/*过程体*/procedureGetRecords(ret_cursoroutmycursor)asbeginopenret_cursorforselect*fromtest;endGetRecords;endTestPackage;小结:包是Oracle特有的概念,SqlServer中找不到相匹配的东西。在我看来,包有点像VC

7、++的类,包头就是.h文件,包体就是.cpp文件。包头只负责定义,包体则负责具体实现。如果包返回多个游标,则DataReader会按照您向参数集合中添加它们的顺序来访问这些游标,而不是按照它们在过程中出现的顺序来访问。可使用DataReader的NextResult()方法前进到下一个游标。createorreplacepackageTestPackageistypemycursorisrefcursor;procedureUpdateRecords(id_ininnumber,newNamein

8、varchar2,newAgeinnumber);procedureSelectRecords(ret_cursoroutmycursor);procedureDeleteRecords(id_ininnumber);procedureInsertRecords(name_ininvarchar2,age_ininnumber);endTestPackage;包体如下:createorreplacepackagebodyTestPackageisprocedureUpdateRec

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。