PL/SQL基础

PL/SQL块分类

1、无名块或匿名块(Anonymous):动态构造,只能执行一次,可调用其他程序,但不能被其他程序调用。
2、命名块(Named):带有名称的匿名块,这个名称就是标签。
3、子程序(SubProgram):存储在数据库中的存储过程、函数等。当在数据库上建立好后可以在其他程序中调用。
4、触发器(Trigger):当数据库发生操作时,会触发一些事件,从而自动执行相应的程序。
5、程序包(Package):存储在数据库中的一组子程序、变量定义。
标识符
变量命名方法
命名规则 例子
程序变量 v_name v_name
程序常量 c_name c_company_nme
游标变量 cursor_name cursor_emp
异常标志 e_name e_too_many
表类型 name_table_type emp_record_type
name_table emp_table
记录类型 name_record emp_record
绑定变量 g_name g_year_sal

属性类型

1、%TYPE
定义一个变量,其数据类型与已经定义的某个数据变量(尤其是表的某一列)的数据类型相一致,这时可以使用%TYPE。
使用%TYPE特性的优点在于:
1)所引用的数据库列的数据类型可以不必知道
2)所引用的数据库列的数据类型可以实时改变,容易保持一致,不用修改PL/SQL程序

2、%ROWTYPE
返回一个记录类型,其数据类型和数据库表的数据结构相一致,这时可以使用%ROWTYPE。
使用%ROWTYPE特性的优点在于:
1)所引用的数据库中的列的个数和数据类型可以不必知道
2)所引用的数据库中列的个数和数据类型可以实时改变,容易保持一致,不用修改PL/SQL程序
--%TYPE用法
DECLARE
  v_ename emp.ename%TYPE;
BEGIN
  SELECT ename INTO v_ename
  FROM emp WHERE empno = ‘7369‘;
  Dbms_Output.put_line(‘雇员姓名‘||v_ename);
END;
--%ROWTYPE用户
DECLARE
  emp_record emp%ROWTYPE;
BEGIN
  SELECT * INTO emp_record
  FROM emp WHERE empno = ‘7369‘;
  Dbms_Output.put_line(‘雇员姓名‘||emp_record.ename||‘,职业‘||emp_record.job);
END;

循环结构

LOOP循环语法:
LOOP
  要执行的语句;
  EXIT WHEN <条件语句> --条件满足,退出循环语句
END LOOP;

顺序控制

顺序控制用于按顺序执行语句。顺序控制包括:
1、GOTO语句:表示无条件跳转到指定的标号
2、NULL语句:NULL语句是一个可执行语句,可以用NULL语句来说明“不用做任何事件”的意思,相当于一个占位符或不执行任何操作的空语句,可以使某些语句变得有意义,提高程序的可读性,保证其他语句结构的完整性和正确性。

需求:循环显示变量v_count的值,如果该值大于10则结束循环,并显示该 变量最终值。
DECLARE
  v_count NUMBER := 1;
BEGIN
  LOOP
    Dbms_Output.put_line(‘v_count的当前值为:‘||v_count);
    v_count := v_count + 1;
    IF v_count > 10 THEN
      GOTO labelOffLoop;
    ELSE
      NULL;
    END IF;
  END LOOP;
  <<labelOffLoop>>
  Dbms_Output.put_line(‘v_count的当前值为:‘||v_count);
END;

PL/SQL基础,布布扣,bubuko.com

PL/SQL基础

上一篇:Oracle体系结构概述


下一篇:用c#开发微信 (4) 基于Senparc.Weixin框架的接收事件推送处理 (源码下载)