【Oracle】PL/SQL——基本语法,记录类型和控制流程
基本语法PL/SQL的基本语法分为三个部分,分别是:声明,执行,执行异常。 --将打印功能打开,不然输出结果无法看到 SET SERVEROUTPUT ON DECLARE --声明部分 : 在此声明 PL/SQL 用到的变量,类型及游标,以及局部的存储过程和函数 BEGIN --执行部分 : 过程及 SQL 语句,即程序的主要部分 EXCEPTION --执行异常部分 : 错误处理 END 记录类型记录类型就类似于Java中的一个实体类,定义之后我们可以通过调用实体类名来操作各种变量 DECLARE --声明一个记录类型 TYPE EMP_RECORD IS RECORD( V_SAL EMPLOYEES.SALARY%TYPE,V_EMAIL EMPLOYEES.EMAIL%TYPE,V_HIRE_DATE EMPLOYEES.HIRE_DATE%TYPE ); --定义一个记录类型的成员变量 V_EMP_RECORD EMP_RECORD; BEGIN SELECT E.SALARY,E.EMAIL,E.HIRE_DATE INTO V_EMP_RECORD FROM EMPLOYEES E WHERE E.EMPLOYEE_ID = 100; --打印语句 DBMS_OUTPUT.put_line(V_EMP_RECORD.V_SAL||','||V_EMP_RECORD.V_EMAIL||','||V_EMP_RECORD.V_HIRE_DATE); END; / 其中, %TYPE:定义一个变量,其数据类型与已经定义的某个 数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE。 使用%TYPE 特性的优点在于: 所引用的数据库列的数据类型可以不必知道; 所引用的数据库列的数据类型可以实时改变。 %ROWTYPE :返回一个记录类型,其数据类型和数据库表的数据结构相一致。 使用%ROWTYPE 特性的优点在于: 所引用的数据库中列的个数和数据类型可以不必知道; 所引用的数据库中列的个数和数据类型可以实时改变。 SET SERVEROUTPUT ON DECLARE V_EMP EMPLOYEES%ROWTYPE; BEGIN SELECT * INTO V_EMP FROM EMPLOYEES E WHERE E.EMPLOYEE_ID = 100; DBMS_OUTPUT.put_line(V_EMP.EMPLOYEE_ID || '--' || V_EMP.LAST_NAME || ':' || V_EMP.SALARY); END; / 控制流程条件语句:IF语句:IF <布尔表达式> THEN CASE语句:CASE selector 需要注意的是,CASE语句中的when条件只能是单个字符串类型的数据。 DECLARE V_grade char(1) ; V_appraisal VARCHAR2(20); BEGIN V_appraisal := CASE v_grade WHEN ‘A’ THEN ‘Excellent’ WHEN ‘B’ THEN ‘Very Good’ WHEN ‘C’ THEN ‘Good’ ELSE ‘No such grade’ END; DBMS_OUTPUT.PUT_LINE(‘Grade:‘||v_grade||’ Appraisal: ‘|| v_appraisal); END; 循环语句简单循环LOOP WHILE 循环( 相较 1 ,推荐使用 2)WHILE <布尔表达式> LOOP 数字式循环FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP 注:每循环一次,循环变量自动加 1;使用关键字 REVERSE,循环变量自动减 1。 跟在 IN REVERSE 后面的数字必须是从小到大的顺序, 而且必须是整数,不能是变量或表达式。可以使用 EXIT 退出循环。 其中, 标号和 GOTO: PL/SQL 中 GOTO 语句是无条件跳转到指定的标号去的意思。语法如下: GOTO label; . . . . . . <<label>> /*标号是用<< >>括起来的标识符 */ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |