l vsal NUMBER 9 2 BEGIN Compute the
注释代码 – 单行的注视可以用两个减号 (--)作为前缀. – 多行注释用 /* 和 */包括起来. l 例子: . . . v_sal NUMBER (9, 2); BEGIN /* Compute the annual salary based on the monthly salary input from the user */ v_sal : = &p_monthly_sal * 12; END; -- This is the end of the block
PL/SQL 函数 l PL/SQL提供大量的函数来帮助操纵数据 l 例子 – 为公司建立邮件列表. v_mailing_address : = v_name||CHR(10)|| v_address||CHR(10)||v_state|| CHR(10)||v_zip; – 转换为小写字母. v_ename : = LOWER(v_ename);
数据类型转换 – 将数据可自动转换为可比较的类型. – 不同的数据类型混杂在一个语句中可能引 起错误或者降低效率. – 转换函数: TO_CHAR l TO_DATE l TO_NUMBER l DECLARE v_date VARCHAR 2(15); BEGIN SELECT TO_CHAR(hiredate, INTO FROM WHERE END; 'MON. DD, YYYY') v_date empno = 7839;
块的嵌套和变量作用域 例子 l l l . . . x BINARY_INTEGER; BEGIN. . . DECLARE y NUMBER; BEGIN. . . END; X的作用域 Y的作用域
使用绑定(Bind)变量 PL/SQL中, 如果要引用一个绑定变量, 必须加一个冒号(: )前缀 l在 l 例子: VARIABLE DECLARE v_sal BEGIN SELECT INTO FROM WHERE : g_salary END; / g_salary NUMBER emp. sal%TYPE; sal v_sal empno = 7369; : = v_sal;
代码要有缩进 l 为了清楚起见,对每一层次的代码进行缩进. l 例如: BEGIN IF x=0 THEN y: =1; END IF; END; DECLARE v_deptno NUMBER(2); v_location VARCHAR 2(13); BEGIN SELECT deptno, loc INTO v_deptno, v_location FROM dept WHERE dname = 'SALES'; . . . END;
l 练习:. . . DECLARE V_SAL V_COMM V_MESSAGE BEGIN. . . 决定变量的作用域 NUMBER(7, 2) : = 60000; NUMBER(7, 2) : = V_SAL *. 20; VARCHAR 2(255) : = ' eligible for commission'; DECLARE V_SAL NUMBER(7, 2) : = 50000; V_COMM NUMBER(7, 2) : = 0; V_TOTAL_COMP NUMBER(7, 2) : = V_SAL + V_COMM; BEGIN. . . V_MESSAGE : = 'CLERK not'||V_MESSAGE; END; V_MESSAGE : = 'SALESMAN'||V_MESSAGE; END;
- Slides: 22