第三章PL/SQL 基础
PL/SQL块结构
DECLARE
BEGIN 必须
EXCEPTION
END;必须
set serveroutput on
BEGIN
dbms_output.put_line('hello, everyone');
END;
/
标量类型
VARCHAR2/CHAR/NUMBER/DATE/BOOLEAN
v_ename VARCHAR2(10);
vsal NUMBER(5,2);
c_tax_rate CONSTANT NUMBER(3,2) :=5.5;
v_hiredate DATE;
v_valid BOOLEAN NOT NULL DEFAULT FALSE;
块中赋值要用:=
%TYPE - 会按照数据库列或其他变量来确定新变量的类型和长度
复合类型
参考类型
REF CURSOR
DECLARE
TYPE c1 IS REF CURSOR
emp_cursor c1
v_ename emp.ename%TYPE
v_sal emp.sal%TYPE
BEGIN
OPEN emp_cursor FOR
SELECT ename,sal FROM emp WHERE deptno=10;
LOOP
FETCH emp_cursor INTO v_ename,v_sal;
EXIT WHEN emp_cursor%NOTFOUND
dbms_output.put_line(v_ename);
END LOOP;
CLOSE emp_cursor;
END;
/
非PL/SQL 变量
var name varchar2(10)
BEGIN
SELECT ename INTO :name from emp WHERE empno=7788;
END;
/
单行注释 --
多行注释 /* */
标识符命名规则
定义变量是,v_前缀 v_sal
定义常量是,c_前缀 c_rate
定义游标是,cursor做后缀 emp_cursor
定义例外是,e做前缀 e_integrity_error
第六章访问Oracle
PL/SQL块结构嵌入SELECT, 必须要有INTO,可以使用标量变量或这记录变量,只能返回一条记录,否则触发NO_DATA_FOUND 或者TOO_MANY_ROWS
SELECT select_list
INTO var_name
FROM table
WHERE condition;
第七章控制结构
IF THEN
ELSIF THEN
ELSE
END IF;
IF THEN
END IF;
IF THEN
ELSE THEN
END IF;
IF THEN
ELSIF THEN
ELSE
END IF;
CASE
WHEN THEN
WHEN THEN
ELSE
END CASE;
循环1
LOOP
EXIT WHEN
END LOOP;
循环2
WHILE condition LOOP
END LOOP;
循环3
FOR counter in [REVERSE]
lower_bound..upper_bound LOOP
END LOOP;
BEGIN
FOR I IN REVERSE 1..10 LOOP
INSERT INTO temp VLAUES(i);
END LOOP;
END;
第8章使用复合数据类型
1.自定义记录
DECLARE
TYPE emp_record_type IS RECORD(
name emp.name%TYPE
salary emp.sal%TYPE
);
emp_record emp_record_type;
..
2.使用%ROWTYPE 属性
dept_record dept%ROWTYPE
emp_record emp%ROWTYPE
第9章 使用游标
使用显式游标
1.定义游标
2.打开游标
3.提取数据
4.关闭游标
游标四属性
1. SQL%ISOPEN
2. SQL%FOUND
3. SQL%NOTFOUND
4. SQL%ROWCOUNT