八宝书库 > 文学其他电子书 > SQL 21日自学通(V3.0)(PDF格式) >

第75部分

SQL 21日自学通(V3.0)(PDF格式)-第75部分

小说: SQL 21日自学通(V3.0)(PDF格式) 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






读完一本书以后要将书合上一样             你应该使用 CLOSE 命令来关闭指针 



语法 



    BEGIN 



        open  employee_cursor; 



        statement1; 



        statement2; 



         。 



      。 close employee_cursor; 



    END 



分析 



    当关闭一个指针以后         查询的结果集就不复存在了            如果你想访问结果集中的数据你 



必须重新打开指针才行 



条件语句 



    现在我们得到了非常有用的东西来控制我们的 SQL 语句的运行  在 PL/SQL                     中的条件 



语句与大多数第三代编程语言是类似的 



IF     THEN 



    在大多数编程中 IF         THEN  语句可能是得常用的语句了           它决定了对于特定的条件 



应当执行哪一部分的操作           其结构如下 



语法 



                                                                     388 


…………………………………………………………Page 389……………………………………………………………

SQL 21  日自学通(V1。0)                                                   翻译人    笨猪 



    IF condition1 THEN 



        statement1; 



    END IF 



    如果你需要对这两种情况进行分别处理  那么你可以将语句形式写成下边的样子 



语法 



    IF condition1 THEN 



        statement1 



    ELSE 



        statement2 



    END IF 



    如果你需要进行判断的条件多于两个  那么语句可以写成下边样子 



语法 



    IF condition1 THEN 



        statement1 



    ELSIF condition2 THEN 



        statement2 



    ELSE 



        statement3 



    END IF 



分析 



    在最后一个例子中          如果满足条件 1        那么就执行语句 1         如果满足条件 2        那么就会 



执行语句 2      否则的话就会执行语句 3           条件语句也可以嵌于其他语句和 LOOP 循环中 



LOOPS 循环 



    LOOPS 在 PL/SQL    的语句块中将不断地执行过程直到指定的条件满足为止  一共有三 



种循环 



    LOOP  本身是一个无限的循环  它经常在指针中使用  如果你想终止这种循环                                 你必 



须指定在什么时候退出             例如  在循环中翻阅指针的时候你可以指定当指针处于最后一行 



的时候退出循环  见下例 



                                                                             389 


…………………………………………………………Page 390……………………………………………………………

SQL 21  日自学通(V1。0)                                                            翻译人     笨猪 



输入 



     BEGIN 



     open employee_cursor 



     LOOP 



      FETCH employee_cursor into employee_record 



        EXIT  WHEN  employee_cursor%NOTFOUND 



        statement1 



     END LOOP 



     close employee_cursor 



     END 



     %NOTFOUND      是指针的一种属性             它表明在当前指针中没有任何数据                      在上一个例 



子中如果指针没有发现数据就会退出循环                          假如你在循环中忽略了这条语句                    循环将会一 



直进行下去 



    WHILE…LOOP  则是在当条定条件满足时执行特定的语句  而当条件不在满足时就会从 



循环中退出转而执行下一条语句 



输入 



     DECLARE 



        cursor  payment_cursor  is 



            select  cust_id;  payment;  total_due  from  payment_table 



        cust_id  payment_table。cust_id%TYPE 



        payment  payment_table。payment%TYPE 



        total_due  payment_table。total_due%TYPE 



     BEGIN 



        open  payment_cursor 



      WHILE payment 《 total_due LOOP 



        FETCH payment_cursor into cust_id; payment; total_due 



            EXIT  WHEN  payment_cursor%NOTFOUND 



            insert  into  underpay_table 



            values  (cust_id;  'STILL  OWES') 



                                                                                       390 


…………………………………………………………Page 391……………………………………………………………

SQL 21  日自学通(V1。0)                                                            翻译人     笨猪 



     END LOOP 



         close  payment_cursor 



分析 



     在上一个例子中使用了 WHILE…LOOP                       来对指针进行翻阅                 并且在当条件 



payment  start  proc1        or 



     SQL》  sta  proc1            or 



     SQL》 @proc1 



注  PL/SQL    脚本语言可以使用 START             命令或@字符来运行  它也可以被其它的 PL/SQL 



    脚本     SHELL 脚本或其它的程序调用 



将输入返回给用户 



     尤其是在捕获了错误的时候                 你可以会希望输出信息给用户告诉他出现了什么错误 



你可以转送已有的错误信息                  你也可以显示你所定制的错误信息                      对于用户来说这会与错 



误代码更容易理解             也许你想的是当在错误产生时让他们与数据库管理员联系而不是给他 



们尽可以准确的信息 



     PL/SQL  在它的语法部分中并没有提供直接的方式来显示输出                                 但是它可以让你来调 



用一个对该语句块服务的包  这个包是由 DBMS_OUTPUT  来调用的 



EXCEPTION 



    WHEN  zero_divide  THEN 



     DBMS_OUTPUT。put_line('ERROR:    DIVISOR  IS  ZERO。    SEE  YOUR  DBA。') 



分析 



     ZERO_DIVIDE 是 ORACLE 的一个预定义的异常  有许多在程序运行中产生的常见的 



错误都被预定义为异常并且可以被默认地激活  也就是说你不必在编程的过程中手动将其 



激活 



                                                                                

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的