PL/SQ 基础 - 精通Oracle10g PL/SQL编程

第三章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

 

posted @ 2020-04-13 10:37  kakaisgood  阅读(331)  评论(0编辑  收藏  举报