1、注释
单行注释 --
多行注释 /* */
2、命名规范
变量 v_* 开头 v_sal
常量 c_* 开头 c_rate
游标 *_cursor结尾 emp_cursor
例外异常 e_* 开头 e_error
3、块的结构
declear
begin
exception
end;
4、定义变量和常量
(1) 标量(scalar)定义:
v_ename varchar(2);
v_sal number(6,2); --长度为6,小数点后有两位
v_sal number(6,2):=6.2;
v_hirdate date;
v_valid boolean not null default false;
v_ename emp.ename%type; --使用标示符
v_sal emp.sal%type; --使用标示符
(2)复合变量
--定义一个符合类型
DECLARE
TYPE EMP_RECORD_TYPE IS RECORD(
V_ENAME EMP.ENAME%TYPE,
SAL EMP.SAL%TYPE,
TITLE EMP.JOB%TYPE);
JL_RECORD EMP_RECORD_TYPE;
BEGIN
SELECT ENAME, SAL, JOB INTO JL_RECORD FROM EMP WHERE EMPNO = &EMPNO;
DBMS_OUTPUT.PUT_LINE(JL_RECORD.V_ENAME);
END;
--符合类型表实例
DECLARE
TYPE JL_TABLE_TYPE IS TABLE OF EMP.ENAME%TYPE INDEX BY BINARY_INTEGER;
JL_TABLE JL_TABLE_TYPE;
BEGIN
SELECT ENAME INTO JL_TABLE(0) FROM EMP WHERE EMPNO = '7788';
DBMS_OUTPUT.PUT_LINE('员工名字:' || JL_TABLE(0));
END;
(3)参照变量(游标变量)
--输入部门号,显示所有员工的姓名和薪资
DECLARE
--定义游标类型
TYPE JL_EMP_CURSORS_TYPE IS REF CURSOR;
JL_CURSOR JL_EMP_CURSORS_TYPE;
V_ENAME EMP.ENAME%TYPE;
V_SAL EMP.SAL%TYPE;
BEGIN
--把jl_cursor和数据表结合
OPEN JL_CURSOR FOR
SELECT ENAME, SAL FROM EMP WHERE DEPTNO = &DEPTNO;
--循环取出
LOOP
FETCH JL_CURSOR
INTO V_ENAME, V_SAL;
----if-----
--判断游标是否为空
EXIT WHEN JL_CURSOR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(V_ENAME || ':' || V_SAL);
END LOOP;
END;
单行注释 --
多行注释 /* */
2、命名规范
变量 v_* 开头 v_sal
常量 c_* 开头 c_rate
游标 *_cursor结尾 emp_cursor
例外异常 e_* 开头 e_error
3、块的结构
declear
begin
exception
end;
4、定义变量和常量
(1) 标量(scalar)定义:
v_ename varchar(2);
v_sal number(6,2); --长度为6,小数点后有两位
v_sal number(6,2):=6.2;
v_hirdate date;
v_valid boolean not null default false;
v_ename emp.ename%type; --使用标示符
v_sal emp.sal%type; --使用标示符
(2)复合变量
--定义一个符合类型
DECLARE
TYPE EMP_RECORD_TYPE IS RECORD(
V_ENAME EMP.ENAME%TYPE,
SAL EMP.SAL%TYPE,
TITLE EMP.JOB%TYPE);
JL_RECORD EMP_RECORD_TYPE;
BEGIN
SELECT ENAME, SAL, JOB INTO JL_RECORD FROM EMP WHERE EMPNO = &EMPNO;
DBMS_OUTPUT.PUT_LINE(JL_RECORD.V_ENAME);
END;
--符合类型表实例
DECLARE
TYPE JL_TABLE_TYPE IS TABLE OF EMP.ENAME%TYPE INDEX BY BINARY_INTEGER;
JL_TABLE JL_TABLE_TYPE;
BEGIN
SELECT ENAME INTO JL_TABLE(0) FROM EMP WHERE EMPNO = '7788';
DBMS_OUTPUT.PUT_LINE('员工名字:' || JL_TABLE(0));
END;
(3)参照变量(游标变量)
--输入部门号,显示所有员工的姓名和薪资
DECLARE
--定义游标类型
TYPE JL_EMP_CURSORS_TYPE IS REF CURSOR;
JL_CURSOR JL_EMP_CURSORS_TYPE;
V_ENAME EMP.ENAME%TYPE;
V_SAL EMP.SAL%TYPE;
BEGIN
--把jl_cursor和数据表结合
OPEN JL_CURSOR FOR
SELECT ENAME, SAL FROM EMP WHERE DEPTNO = &DEPTNO;
--循环取出
LOOP
FETCH JL_CURSOR
INTO V_ENAME, V_SAL;
----if-----
--判断游标是否为空
EXIT WHEN JL_CURSOR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(V_ENAME || ':' || V_SAL);
END LOOP;
END;