日期:2014-05-16  浏览次数:20596 次

《Oracle Database 11g SQL 开发指南》学习笔记——第11章_PL/SQL编程简介

11.1、块结构
    [DECLARE
       declaration_statements
    ]
    BEGIN
       executable_statements
    [EXCEPTION
       exception_handing _statements
    ]
    END;
    /
 每一条语句都由';'结尾,PL/SQL块由‘/’结尾。  SET SERVEROUTPUT ON命令打开服务器输出。
 还可以用%TYPE关键字来定义变量类型,它告诉PL/SQL使用与表中列相同的类型。
11.3、在PL/SQL中,IF、THEN、 ELSE、ELSEIF、ENDIF等关键字来执行条件逻辑,还可以嵌套使用。
11.4、循环。
   简单循环、while循环、for循环。
  11.4.1、简单循环:直到显式结束循环之前一直运行。
    LOOP
      ststement
    END LOOP;   要结束可以使用exit或exit  when语句。
    如:v_count :=0;    loop  v_count := v_count+1;   
               exit when v_count= 5;    end   loop;
   在Oracle 11g中也可以使用CONTINUE 或CONTINUE WHEN 语句结束当前迭代;
   如:v_count :=0;    loop  v_count := v_count+1;   
     if v_count = 3 then  continue;   end  if ;
     或者将此行换为:CIONTINUE WHEN v_count = 3;
     exit when v_count= 5;    end   loop;
  11.4.2、WHILE 循环:在某个条件出现之前一直运行。
    如:v_count := 0;  WHILE v_count<6  
      LOOP   v_count := v_count+1;  END LOOP;
  11.4.3、FOR循环:预先确定次数。
   如:FOR  c   IN   [ REVERSE ]   1..5 
      LOOP
        dbms_output.put_line(c);
      END LOOP;
11.5、游标:可以使用游标(cursor)获取查询返回的记录。
步骤如下:1、声明一些变量,用于保存记录的列值。(注意使用%TYPE,类型要兼容)
               2、声明游标并指定查询。(放在声明中:CURSOR cursor_name  IS select_statement;)
           3、打开游标。(在执行中:OPEN cursor_name)
           4、每次从游标中获取一条记录,并将列值存储在第一步声明的变量中,然后对这些变量执行操作
           FETCH  cursor_name  INTO  variable[, variable···];
           游标可能包含很多条记录,因此要使用循环,为确定循环是否结束,可以使用布尔变量coursor_name%NOTFOUND.
           5、关闭游标。CLOSE  cursor_name;
         例如:SET SERVEROUTPUT ON
            DECLARE
                          v_product_id  products.product_id%TYPE;
                          v_name   products.product_name%TYPE;
                          v_price   products.product.price%TYPE;
            CURSOR  v_product_cursor  IS