1. PL/SQL结构
a) DECLARE: 申明变量,游标(:=来赋初值)
b) BEGIN: 表示程序开始
c) EXCEPTION: 表示异常
d) END; : 表示程序结束
2. 流程控制
a) 条件结构: IF-THEN、IF-THEN-ELSIF
b) Case语句: case
end case;
c) 循环结构:(LOOP、WHILE-LOOP、FOR-LOOP)
LOOP
Statements;
End LOOP;
3.事务:TRANSACTION(commit 和 rollback)
是不可分割的工作逻辑单元,作为一个整体提交,要么执行,要么不执行
a) 原子性 Atomicity: 不可分的,一体的
b) 一致性 Consistency: 数据在执行后一致的
c) 隔离性 Isolation : 事务之间彼此独立、隔离
d) 永久性 Durability : 修改之后就是永久的
4.数据存储
a) 存储过程
CREATE OR REPLACE PROCEDURE 过程名
IS
BEGIN
END;
例子:
CREATE OR REPLACE PROCEDURE P_DEPT_DNAME
AS
CURSOR C_DEPT IS SELECT * from dept;
BEGIN
FOR V_ROW IN C_DEPT
LOOP
DBMS_OUTPUT.PUT_LINE(V_ROW.DNAME);
END LOOP;
END;
b) 定义函数
CREATE OR REPLACE FUNCTION 过程名
AS
BEGIN
SQL;
RETURN;
END;
例子:
CREATE OR REPLACE FUNCTION F_GETENAMEBYEMPNO(V_EMPNO VARCHAR2)
RETURN VARCHAR2
AS
V_ENAME EMP.ENAME%TYPE;
BEGIN
SELECT E.ENAME INTO V_ENAME FROM EMP E WHERE E.EMPNO = V_EMPNO;
RETURN V_ENAME;
END;
c) 游标:游标用来处理数据库中检索的多行记录(使用select语句)
静态游标:结果集已经确定
(隐式游标,显式游标)
动态游标
声明游标—>打开游标—>处理游标(把取得结果放入pl/sql中)—>关闭游标
例子:
CREATE OR REPLACE PROCEDURE P_SALARY_1
AS
CURSOR C_EMP IS SELECT EMPNO,SAL FROM EMP WHERE JOB='CLERK';
V_EMPNO EMP.EMPNO%TYPE;
V_SAL EMP.SAL%TYPE;
BEGIN
--打开游标
OPEN C_EMP;
LOOP
IF C_EMP%NOTFOUND THEN
EXIT;
END IF;
FETCH C_EMP
INTO V_EMPNO,V_SAL;
IF V_SAL<900 THEN
UPDATE EMP E SET E.SAL=E.SAL+500 WHERE E.EMPNO=V_EMPNO;
END IF;
END LOOP;
--关闭游标
CLOSE C_EMP;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;