存储过程oracle详细使用基础手册带图.doc
《存储过程oracle详细使用基础手册带图.doc》由会员分享,可在线阅读,更多相关《存储过程oracle详细使用基础手册带图.doc(63页珍藏版)》请在咨信网上搜索。
1、Oracle存储过程总结1、创立存储过程create or replace procedure test(var_name_1 in type,var_name_2 out type) as-声明变量(变量名 变量类型)begin-存储过程执行体end test;打印出输入时间信息E.g:create or replace procedure test(workDate in Date) isbegindbms_output.putline(The input date is:|to_date(workDate,yyyy-mm-dd);end test;2、变量赋值变量名 := 值;E.g:c
2、reate or replace procedure test(workDate in Date) isx number(4,2);beginx := 1;end test;3、判断语句:if 比较式 then begin end;end if;E.gcreate or replace procedure test(x in number) isbeginif x 0 thenbeginx := 0 - x;end;end if;if x = 0 thenbeginx:= 1;end;end if;end test;4、For 循环For . in . LOOP-执行语句end LOOP;(1
3、)循环遍历游标create or replace procedure test() asCursor cursor is select name from student;name varchar(20);beginfor name in cursor LOOPbegindbms_output.putline(name);end;end LOOP;end test;(2)循环遍历数组create or replace procedure test(varArray in myPackage.TestArray) as-(输入参数varArray 是自定义数组类型,定义方式见标题6)i numb
4、er;begini := 1; -存储过程数组是起始位置是从1开始,与java、C、C+等语言不同。由于在Oracle中本是没有数组概念,数组其实就是一张-表(Table),每个数组元素就是表中一种记录,因此遍历数组时就相称于从表中第一条记录开始遍历for i in 1.varArray.count LOOPdbms_output.putline(The No. | i |record in varArray is:|varArray(i);end LOOP;end test;5、While 循环while 条件语句 LOOPbeginend;end LOOP;E.gcreate or rep
5、lace procedure test(i in number) asbeginwhile i 10 LOOPbegini:= i + 1;end;end LOOP;end test;6、数组一方面明确一种概念:Oracle中本是没有数组概念,数组其实就是一张表(Table),每个数组元素就是表中一种记录。使用数组时,顾客可以使用Oracle已经定义好数组类型,或可依照自己需要定义数组类型。(1)使用Oracle自带数组类型x array;-使用时需要需要进行初始化e.g:create or replace procedure test(y out array) isx array;begin
6、x := new array();y := x;end test;(2)自定义数组类型 (自定义数据类型时,建议通过创立Package方式实现,以便于管理)E.g (自定义使用参见标题4.2) create or replace package myPackage is - Public type declarations type info is record( name varchar(20), y number); type TestArray is table of info index by binary_integer; -此处声明了一种TestArray类型数据,其实其为一张存储
7、Info数据类型Table而已,及TestArray 就是一张表,有两个字段,一种是name,一种是y。需要注意是此处使用了Index by binary_integer 编制该Table索引项,也可以不写,直接写成:type TestArray istable of info,如果不写话使用数组时就需要进行初始化:varArray myPackage.TestArray;varArray := new myPackage.TestArray();end TestArray;7.游标使用 Oracle中Cursor是非常有用,用于遍历暂时表中查询成果。其有关办法和属性也诸多,现仅就惯用用法做一
8、二简介:(1)Cursor型游标(不能用于参数传递)create or replace procedure test() iscusor_1 Cursor is select std_name from student where .; -Cursor使用方式1 cursor_2 Cursor;beginselect class_name into cursor_2 from class where .; -Cursor使用方式2可使用For x in cursor LOOP . end LOOP;来实现对Cursor遍历end test;(2)SYS_REFCURSOR型游标,该游标是Ora
9、cle以预先定义游标,可作出参数进行传递create or replace procedure test(rsCursor out SYS_REFCURSOR) iscursor SYS_REFCURSOR;name varhcar(20);beginOPEN cursor FOR select name from student where . -SYS_REFCURSOR只能通过OPEN办法来打开和赋值LOOPfetch cursor into name-SYS_REFCURSOR只能通过fetch into来打开和遍历 exit when cursor%NOTFOUND; -SYS_RE
10、FCURSOR中可使用三个状态属性: -%NOTFOUND(未找到记录信息) %FOUND(找到记录信息) -%ROWCOUNT(然后当前游标所指向行位置)dbms_output.putline(name);end LOOP;rsCursor := cursor;end test;下面写一种简朴例子来对以上所说存储过程用法做一种应用:现假设存在两张表,一张是学生成绩表(studnet),字段为:stdId,math,article,language,music,sport,total,average,step 一张是学生课外成绩表(out_school),字段为:stdId,parctice,
11、comment通过存储过程自动计算出每位学生总成绩和平均成绩,同步,如果学生在课外课程中获得评价为A,就在总成绩上加20分。create or replace procedure autocomputer(step in number) isrsCursor SYS_REFCURSOR;commentArray myPackage.myArray;math number;article number;language number;music number;sport number;total number;average number;stdId varchar(30);record myP
12、ackage.stdInfo;i number;begini := 1;get_comment(commentArray);-调用名为get_comment()存储过程获取学生课外评分信息OPEN rsCursor for select stdId,math,article,language,music,sport from student t where t.step = step;LOOPfetch rsCursor into stdId,math,article,language,music,sport;exit when rsCursor%NOTFOUND;total := math
13、+ article + language + music + sport;for i in mentArray.count LOOPrecord := commentArray(i);if stdId = record.stdId thenbeginif ment = 'A'thenbegintotal := total + 20;go to next;-使用go to跳出for循环 end;end if;end;end if;end LOOP; average := total / 5;update student t set t.total=total and t.av
14、erage = average where t.stdId = stdId;end LOOP;end;end autocomputer;-获得学生评论信息存储过程create or replace procedure get_comment(commentArray out myPackage.myArray) isrs SYS_REFCURSOR;record myPackage.stdInfo;stdId varchar(30);comment varchar(1);i number;beginopen rs for select stdId,comment from out_school
15、i := 1;LOOPfetch rs into stdId,comment;exit when rs%NOTFOUND;record.stdId := stdId;ment := comment;recommentArray(i) := record;i:=i + 1;end LOOP;end get_comment;-定义数组类型myArraycreate or replace package myPackage is begintype stdInfo is record(stdId varchar(30),comment varchar(1);type myArray is table
16、 of stdInfo index by binary_integer;end myPackage;项目中有涉及存储过程对字符串解决,因此就将在网上查找到资料汇总,做一种信息拼接式总结。如下信息均来自互联网,贴出来一则自己保存以待后来使用,一则供人们分享。字符函数返回字符值这些函数全都接受是字符族类型参数(CHR除外)并且返回字符值.除了特别阐明之外,这些函数大某些返回VARCHAR2类型数值.字符函数返回类型所受限制和基本数据库类型所受限制是相似。字符型变量存储最大值:VARCHAR2数值被限制为字符(ORACLE 8中为4000字符)CHAR数值被限制为255字符(在ORACLE8中是)l
17、ong类型为2GBClob类型为4GB1、CHR语法: chr(x)功能:返回在数据库字符集中与X拥有等价数值字符。CHR和ASCII是一对反函数。通过CHR转换后字符再通过ASCII转换又得到了本来字符。使用位置:过程性语句和SQL语句。2、CONCAT语法: CONCAT(string1,string2)功能:返回string1,并且在背面连接string2。使用位置:过程性语句和SQL语句。3、INITCAP语法:INITCAP(string)功能:返回字符串每个单词第一种字母大写而单词中其她字母小写string。单词是用.空格或给字母数字字符进行分隔。不是字母字符不变动。使用位置:过程
18、性语句和SQL语句。4、LTRIM语法:LTRIM(string1,string2)功能:返回删除从左边算起出当前string2中字符string1。String2被缺省设立为单个空格。数据库将扫描string1,从最左边开始。当遇到不在string2中第一种字符,成果就被返回了。LTRIM行为方式与RTRIM很相似。使用位置:过程性语句和SQL语句。5、NLS_INITCAP语法:NLS_INITCAP(string,nlsparams)功能:返回字符串每个单词第一种字母大写而单词中其她字母小写string,nlsparams指定了不同于该会话缺省值不同排序序列。如果不指定参数,则功能和IN
19、ITCAP相似。Nlsparams可以使用形式是:NLS_SORT=sort这里sort制定了一种语言排序序列。使用位置:过程性语句和SQL语句。6、NLS_LOWER语法:NLS_LOWER(string,nlsparams)功能:返回字符串中所有字母都是小写形式string。不是字母字符不变。 Nlsparams参数形式与用途和NLS_INITCAP中nlsparams参数是相似。如果nlsparams没有被包括,那么NLS_LOWER所作解决和LOWER相似。使用位置;过程性语句和SQL语句。7、NLS_UPPER语法:nls_upper(string,nlsparams)功能:返回字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储 过程 oracle 详细 使用 基础 手册
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。