欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    oracle存储过程+触发器Word文档下载推荐.docx

    • 资源ID:7562676       资源大小:42.42KB        全文页数:53页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    oracle存储过程+触发器Word文档下载推荐.docx

    1、4、For 循环For . in . LOOP-执行语句end LOOP;(1)循环遍历游标create or replace procedure test() asCursor cursor is select name from student; name varchar(20);for name in cursor LOOPdbms_output.putline(name);(2)循环遍历数组create or replace procedure test(varArray in myPackage.TestArray) as-(输入参数varArray 是自定义的数组类型,定义方式见标

    2、题6)i number;i : -存储过程数组是起始位置是从1开始的,与java、C、C+等语言不同。因为在Oracle中本是没有数组的概念的,数组其实就是一张-表(Table),每个数组元素就是表中的一个记录,所以遍历数组时就相当于从表中的第一条记录开始遍历for i in 1.varArray.count LOOPdbms_output.putline(The No. | i |record in varArray is: |varArray(i);5、While 循环while 条件语句 LOOPcreate or replace procedure test(i in number)

    3、aswhile i 10 LOOPbegini:= i + 1;6、数组首先明确一个概念:Oracle中本是没有数组的概念的,数组其实就是一张表(Table),每个数组元素就是表中的一个记录。使用数组时,用户可以使用Oracle已经定义好的数组类型,或可根据自己的需要定义数组类型。(1)使用Oracle自带的数组类型x array; -使用时需要需要进行初始化e.g:create or replace procedure test(y out array) is= new array();y := x;(2)自定义的数组类型 (自定义数据类型时,建议通过创建Package的方式实现,以便于管理

    4、)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的类型数据,其实其为一张存储Info数据类型的Table而已,及TestArray 就是一张表,有两个字段,一个是name,一个是y。需要注意的是此处使用了Index by bin

    5、ary_integer 编制该Table的索引项,也可以不写,直接写成:type TestArray istable of info,如果不写的话使用数组时就需要进行初始化:varArray myPackage.TestArray; varArray := new myPackage.TestArray();end TestArray;7.游标的使用 Oracle中Cursor是非常有用的,用于遍历临时表中的查询结果。其相关方法和属性也很多,现仅就常用的用法做一二介绍:(1)Cursor型游标(不能用于参数传递)create or replace procedure test() iscuso

    6、r_1 Cursor is select std_name from student where .; -Cursor的使用方式1 cursor_2 Cursor;select class_name into cursor_2 from class where .; -Cursor的使用方式2可使用For x in cursor LOOP . end LOOP; 来实现对Cursor的遍历(2)SYS_REFCURSOR型游标,该游标是Oracle以预先定义的游标,可作出参数进行传递create or replace procedure test(rsCursor out SYS_REFCUR

    7、SOR) iscursor SYS_REFCURSOR; name varhcar(20);OPEN cursor FOR select name from student where . -SYS_REFCURSOR只能通过OPEN方法来打开和赋值LOOPfetch cursor into name-SYS_REFCURSOR只能通过fetch into来打开和遍历 exit when cursor%NOTFOUND; -SYS_REFCURSOR中可使用三个状态属性: -%NOTFOUND(未找到记录信息) %FOUND(找到记录信息) -%ROWCOUNT(然后当前游标所指向的行位置)r

    8、sCursor := cursor;下面写一个简单的例子来对以上所说的存储过程的用法做一个应用:现假设存在两张表,一张是学生成绩表(studnet),字段为:stdId,math,article,language,music,sport,total,average,step 一张是学生课外成绩表(out_school),字段为:stdId,parctice,comment通过存储过程自动计算出每位学生的总成绩和平均成绩,同时,如果学生在课外课程中获得的评价为A,就在总成绩上加20分。create or replace procedure autocomputer(step in number)

    9、 isrsCursor SYS_REFCURSOR;commentArray myPackage.myArray;math number;article number;language number;music number;sport number;total number;average number;stdId varchar(30);record myPackage.stdInfo;get_comment(commentArray); -调用名为get_comment()的存储过程获取学生课外评分信息OPEN rsCursor for select stdId,math,article

    10、,language,music,sport from student t where t.step = step;fetch rsCursor into stdId,math,article,language,music,sport; exit when rsCursor%NOTFOUND;total := math + article + language + music + sport;for i in mentArray.count LOOPrecord := commentArray(i);if stdId = record.stdId thenif ment = 'A& t

    11、hen= total + 20;go to next; -使用go to跳出for循环 end;average := total / 5;update student t set t.total=total and t.average = average where t.stdId = stdId;end autocomputer;-取得学生评论信息的存储过程create or replace procedure get_comment(commentArray out myPackage.myArray) isrs SYS_REFCURSOR;comment varchar(1);open

    12、rs for select stdId,comment from out_schoolfetch rs into stdId,comment; exit when rs%NOTFOUND;record.stdId := stdId;ment := comment;recommentArray(i) := record;=i + 1;end get_comment;-定义数组类型myArraycreate or replace package myPackage is begintype stdInfo is record(stdId varchar(30),comment varchar(1)

    13、;type myArray is table of stdInfo index by binary_integer;end myPackage;项目中有涉及存储过程对字符串的处理,所以就将在网上查找到的资料汇总,做一个信息拼接式的总结。以下信息均来自互联网,贴出来一则自己保存以待以后使用,一则供大家分享。字符函数返回字符值这些函数全都接收的是字符族类型的参数(CHR除外)并且返回字符值.除了特别说明的之外,这些函数大部分返回VARCHAR2类型的数值.字符函数的返回类型所受的限制和基本数据库类型所受的限制是相同的。字符型变量存储的最大值:VARCHAR2数值被限制为2000字符(ORACLE

    14、8中为4000字符)CHAR数值被限制为255字符(在ORACLE8中是2000)long类型为2GBClob类型为4GB1、CHR语法: chr(x)功能:返回在数据库字符集中与X拥有等价数值的字符。CHR和ASCII是一对反函数。经过CHR转换后的字符再经过ASCII转换又得到了原来的字符。使用位置:过程性语句和SQL语句。2、CONCAT语法: CONCAT(string1,string2)返回string1,并且在后面连接string2。3、INITCAPINITCAP(string)返回字符串的每个单词的第一个字母大写而单词中的其他字母小写的string。单词是用.空格或给字母数字字

    15、符进行分隔。不是字母的字符不变动。4、LTRIMLTRIM(string1,string2)返回删除从左边算起出现在string2中的字符的string1。String2被缺省设置为单个的空格。数据库将扫描string1,从最左边开始。当遇到不在string2中的第一个字符,结果就被返回了。LTRIM的行为方式与RTRIM很相似。5、NLS_INITCAPNLS_INITCAP(string,nlsparams)返回字符串每个单词第一个字母大写而单词中的其他字母小写的string,nlsparams指定了不同于该会话缺省值的不同排序序列。如果不指定参数,则功能和INITCAP相同。Nlspar

    16、ams可以使用的形式是:NLS_SORT=sort这里sort制订了一个语言排序序列。6、NLS_LOWERNLS_LOWER(string,nlsparams)返回字符串中的所有字母都是小写形式的string。不是字母的字符不变。 Nlsparams参数的形式与用途和NLS_INITCAP中的nlsparams参数是相同的。如果nlsparams没有被包含,那么NLS_LOWER所作的处理和LOWER相同。使用位置;7、NLS_UPPERnls_upper(string,nlsparams)返回字符串中的所有字母都是大写的形式的string。nlsparams参数的形式与用途和NLS_INI

    17、TCAP中的相同。如果没有设定参数,则NLS_UPPER功能和UPPER相同。8、REPLACEREPLACE(string,search_str,replace_str)把string中的所有的子字符串search_str用可选的replace_str替换,如果没有指定replace_str,所有的string中的子字符串search_str都将被删除。REPLACE是TRANSLATE所提供的功能的一个子集。9、RPADRPAD(string1,x,string2)返回在X字符长度的位置上插入一个string2中的字符的string1。如果string2的长度要比X字符少,就按照需要进行复

    18、制。如果string2多于X字符,则仅string1前面的X各字符被使用。如果没有指定string2,那么使用空格进行填充。X是使用显示长度可以比字符串的实际长度要长。RPAD的行为方式与LPAD很相似,除了它是在右边而不是在左边进行填充。10、RTRIM RTRIM(string1,string2)功能: 返回删除从右边算起出现在string1中出现的字符string2. string2被缺省设置为单个的空格.数据库将扫描string1,从右边开始.当遇到不在string2中的第一个字符,结果就被返回了RTRIM的行为方式与LTRIM很相似.11、SOUNDEX SOUNDEX(string

    19、) 返回string的声音表示形式.这对于比较两个拼写不同但是发音类似的单词而言很有帮助.12、SUBSTR SUBSTR(string,a,b) 返回从字母为值a开始b个字符长的string的一个子字符串.如果a是0,那么它就被认为从第一个字符开始.如果是正数,返回字符是从左边向右边进行计算的.如果b是负数,那么返回的字符是从string的末尾开始从右向左进行计算的.如果b不存在,那么它将缺省的设置为整个字符串.如果b小于1,那么将返回NULL.如果a或b使用了浮点数,那么该数值将在处理进行以前首先被却为一个整数.13、TRANSLATE 语法: TRANSLATE(string,from_

    20、str,to_str) 功能: 返回将所出现的from_str中的每个字符替换为to_str中的相应字符以后的string. TRANSLATE是REPLACE所提供的功能的一个超集.如果from_str比to_str长,那么在from_str中而不在to_str中而外的字符将从string中被删除,因为它们没有相应的替换字符. to_str不能为空.Oracle把空字符串认为是NULL,并且如果TRANSLATE中的任何参数为NULL,那么结果也是NULL.14、UPPER UPPER(string) 返回大写的string.不是字母的字符不变.如果string是CHAR数据类型的,那么结果

    21、也是CHAR类型的.如果string是VARCHAR2类型的,那么结果也是VARCHAR2类型的.使用位置: 过程性语句和SQL语句。字符函数返回数字这些函数接受字符参数回数字结果.参数可以是CHAR或者是VARCHAR2类型的.尽管实际下许多结果都是整数值,但是返回结果都是简单的NUMBER类型的,没有定义任何的精度或刻度范围.16、ASCII ASCII(string) 数据库字符集返回string的第一个字节的十进制表示.请注意该函数仍然称作为ASCII.尽管许多字符集不是7位ASCII.CHR和ASCII是互为相反的函数.CHR得到给定字符编码的响应字符. ASCII得到给定字符的字符

    22、编码.17、INSTR INSTR(string1, string2a,b) 得到在string1中包含string2的位置. string1时从左边开始检查的,开始的位置为a,如果a是一个负数,那么string1是从右边开始进行扫描的.第b次出现的位置将被返回. a和b都缺省设置为1,这将会返回在string1中第一次出现string2的位置.如果string2在a和b的规定下没有找到,那么返回0.位置的计算是相对于string1的开始位置的,不管a和b的取值是多少.18、INSTRB INSTRB(string1, string2a,b) 和INSTR相同,只是操作的对参数字符使用的位置的

    23、是字节.19、LENGTH LENGTH(string) 返回string的字节单位的长度.CHAR数值是填充空格类型的,如果string由数据类型CHAR,它的结尾的空格都被计算到字符串长度中间.如果string是NULL,返回结果是NULL,而不是0.20、LENGTHB LENGTHB(string) 返回以字节为单位的string的长度.对于单字节字符集LENGTHB和LENGTH是一样的.21、NLSSORT NLSSORT(string,nlsparams) 得到用于排序string的字符串字节.所有的数值都被转换为字节字符串,这样在不同数据库之间就保持了一致性. Nlsparam

    24、s的作用和NLS_INITCAP中的相同.如果忽略参数,会话使用缺省排序.oracle 存储过程的基本语法1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER) IS变量1 INTEGER :=0;变量2 DATE;BEGINEND 存储过程名字2.SELECT INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条 记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子: BEGIN SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx; EXCEPTION WHEN NO_DATA_FOUND THENxxxx; END; .3.IF 判断 IF V_TEST=1 THEN BEGIN do something END IF;4.while 循环 WHILE V_TEST=1 LOOPXXXX END LOOP;5.变量赋值 V_TEST := 123;6.用for in 使用cursor IS CURSOR cur IS SELECT * FROM xxx;


    注意事项

    本文(oracle存储过程+触发器Word文档下载推荐.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开