oracle中的PLSQL

上传人:油条 文档编号:26855539 上传时间:2018-01-02 格式:PPT 页数:27 大小:71.50KB
返回 下载 相关 举报
oracle中的PLSQL_第1页
第1页 / 共27页
oracle中的PLSQL_第2页
第2页 / 共27页
oracle中的PLSQL_第3页
第3页 / 共27页
oracle中的PLSQL_第4页
第4页 / 共27页
oracle中的PLSQL_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《oracle中的PLSQL》由会员分享,可在线阅读,更多相关《oracle中的PLSQL(27页珍藏版)》请在金锄头文库上搜索。

1、PL/SQL,PL/SQL的定义,PL/SQL是一种高级编程语言PL/SQL是ORACLE对标准数据库语言SQL的扩展它通过在程序中嵌入SQL来取代执行多个SQL语句,PL/SQL的定义,PL/SQL是一个过程或者是一个函数;函数接受一个或多个输入参数并返回一个值, 也称作传入参数和传出参数;用户或程序可以在SQL语句内部使用函数,可以用它来计算一个值。“过程”也是一个命名的PL/SQL块,在处理多个变量时会使用“过程”。“过程”接受零个或多个参数作为输入(或输出、或既作输入又作输出,与函数不同,存储过程没有返回值,存储过程不能由SQL语句直接使用,只能通过EXECUTE命令或PL/SQL程序

2、块内部调用。,PL/SQL的语法,一个PL/SQL的代码被称为是一个“块”;每个PL/SQL的代码都可以划分为三部分: 声明部分(Declaration section) 执行部分(Executable section) 异常处理部分(Exception section),声明,一个声明部分包含了变量和常量的数据类型和初始值。这个部分是由关键字DECLARE开始,如果不需要声明变量或常量,那么可以忽略这一部分;需要说明的是游标的声明也在这一部分。变量名称为最多30个字符、数字或特殊符号的字符串,但必须为字符打头。用CONSTANT关键字来指定变量为一个常量,一个变量当作常量使用时必须赋值。,变

3、量赋值,给变量赋值有两种方式:直接给变量赋值 X:=200; Y=Y+(X*20);通过SQL SELECT INTO 或FETCH INTO给变量赋值 SELECT SUM(SALARY),SUM(SALARY*0.1) INTO TOTAL_SALARY,TATAL_COMMISSION FROM EMPLOYEE WHERE DEPT=10;,常量赋值,给常量赋值与变量相似,但常量的值在程序内部不能改变,常量的值在定义时赋予,他的声明方式与变量相似,但必须包括关键字CONSTANT。常量和变量都可被定义为SQL和用户定义的数据类型。 ZERO_VALUE CONSTANT NUMBER:

4、=0; 这个语句定了一个名叫ZERO_VALUE、数据类型是NUMBER、值为0的常量。,非空变量,可以在声明变量的同时给变量强制性的加上NOT NULL约束条件,此时变量在初始化时必须赋值。Variable_name CONSTANT databyte NOT NULL:=|DEFAULT expression,可执行部分,执行部分包含了所有的语句和表达式,执行部分以关键字BEGIN开始,以关键字EXCEPTION结束,如果EXCEPTION不存在,那么将以关键字END结束。分号分隔每一条语句,使用赋值操作符:=或SELECT INTO或FETCH INTO给每个变量赋值。执行部分的错误将在

5、异常处理部分解决,在执行部分中可以使用另一个PL/SQL程序块,这种程序块被称为嵌套块,所有的SQL数据操作语句都可以用于执行部分。,可执行部分,执行PL/SQL块时不能在屏幕上显示SELECT语句的输出。SELECT语句必须包括一个INTO子串或者是游标的一部分。所有的SQL数据操作DML语句都可以用于执行部分,但是PL/SQL中不能使用DDL语句。,游标,游标是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前行的数据等。,游标的分类,游标可以分为显式游标和隐式游标 在使用DML语句或只返回一行结果

6、的SELECT语句时,oracle服务器将创建一个“隐式游标 ”。隐式游标是自动的,不需要用户干预。,显式游标,显式游标的使用需要4步:第一步:声明游标 CURSOR mycur(vartype number) is select emp_no,emp_zc from cus_emp_basic where com_no = vartype;,显式游标,第二步: 打开游标 open mycur(000627) 注:000627是参数,显式游标,第三步: 读取数据 fetch mycur into varno, varprice;,显式游标,第四步:关闭游标 close mycur;,游标的属性

7、,oracle 游标有4个属性:%ISOPEN,%FOUND,%NOTFOUND,%ROWCOUNT。 %ISOPEN判断游标是否被打开,如果打开%ISOPEN等于true,否则等于false; %FOUND %NOTFOUND判断游标所在的行是否有效,如果有效,则%FOUND等于true,否则等于false; %ROWCOUNT返回当前位置为止游标读取的记录行数。,游标的用法示例,set serveroutput on; declare varno varchar2(20); varprice varchar2(20); CURSOR mycur(vartype number) is sel

8、ect emp_no,emp_zc from cus_emp_basic where com_no = vartype; begin if mycur%isopen = false then open mycur(000627); end if; fetch mycur into varno,varprice; while mycur%found loop dbms_output.put_line(varno|,|varprice); if mycur%rowcount=2 then exit; end if; fetch mycur into varno,varprice; end loop

9、; close mycur; end;,IF语句,IF.THEN的语法: IF condition THENStatements 1;Statements 2;.END IF IF语句判断条件condition是否为TRUE,如果是,则执行THEN后面的语句,如果condition为false或NULL则跳过THEN到END IF之间的语句,执行END IF后面的语句。 IF.THEN.ELSE的语法: IF condition THENStatements 1;Statements 2;.ELSEStatements 1;Statements 2;.END IF 如果条件condition为

10、TRUE,则执行THEN到ELSE之间的语句,否则执行ELSE到END IF之间的语句。,循环语句,循环语句共有三种类型的循环,可以在PLSQL块的可执行部分使用,以便重复执行一组语句。LOOP循环FOR循环WHILE循环,LOOP循环,LOOP语句的语法如下: LOOP statements; EXIT WHEN condition; END LOOP LOOP和END LOOP之间的语句无限次的执行显然是不行的,在使用LOOP语句时必须使用EXIT语句,强制循环结束,示例: X:=100; LOOP X:=X+10; IF X1000 THEN EXIT; END IF END LOOP;

11、Y:=X;Y的值是1010.,FOR循环,FOR循环使用一个计数器来控制循环的执行次数,所以它的循环次数是固定的。语法:FOR counter IN REVERSE start_range.end_range LOOP statements; END LOOP;,FOR循环,FOR循环的counter是一个隐式声明的变量,他的初始值是start_range,第二个值是start_range+1,直到end_range,如果start_range等于end _range,那么循环将执行一次。如果使用了REVERSE关键字,那么将是一个降序。如果要退出for循环可以使用EXIT语句。,FOR循环,

12、示例: X:=100; FOR v_counter in 1.10 loop x:=x+10; end loop y:=x;,WHILE循环,WHILE.LOOP有一个条件与循环相联系,如果条件为TRUE,则执行循环体内的语句,如果结果为FALSE,则结束循环。语法: WHILE condition LOOP statements; END LOOP,WHILE循环,示例:X:=100;WHILE X=1000 LOOP X:=X+10;END LOOP;Y=X;,异常处理部分,PL/SQL块的“异常处理部分”由关键字EXCEPTION 来标识,这一部分用来在执行块的过程中出现了错误时显示消息或者指出应该执行的其他操作。 示例: exception when others then raise_application_error(-20999,|ls_obj_name| refresh failed:|to_char(sqlcode)|sqlerrm); dbms_sql.close_cursor (li_cid);end;,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号