Oracle开发基础
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle开发基础
一、P L/SQL基础
1、PL/SQL 简介
Procedural Language/SQL
Oracle 特有
结构化的查询语言
2、结构:
三部分
DECLARE
--声明部分
BEGIN
--执行部分
EXCEPTION
--异常处理
END;
3、查看错误
show error ;
4、优势
(1)运行速度快;(2)结构化
不足:只有用于Oracle数据库
5、PL/SQL变量:
(1)变量类型:
1、标量类型(scalar)---简单类型
identifier[constant]
datatype(number|char|varchar2(n[char|byte])…)[n
ot null] := [expr];
2、复合类型(composite)--操作一条记录
3、参照类型(reference)--操作多条记录
4、lob(large object)
(2)变量规范
一般标量类型以v_开头
举例:
(a)SET SERVEROUTPUT ON;
DECLARE
v_ename VARCHAR2(100);
BEGIN
SELECT ename INTO v_ename FROM emp WHERE empno=7369;
dbms_output.put_line('EName:'|| v_ename);
END;
/
标量类型变量定义
SET SERVEROUTPUT ON;
DECLARE
v_empno emp.empno% TYPE; --跟emp表empno字段类型一致
v_tax_rate CONSTANT NUMBER(10,2) := 0.08;--定义为常量v_ename emp.ename% TYPE;
v_sal emp.sal% TYPE ;
v_total_tax NUMBER(10,2) ;--1234567.89
BEGIN
v_empno := &empno;
SELECT ename, sal INTO v_ename, v_sal FROM emp WHERE empno =v_empno;---不能出现多个INTO
v_total_tax := v_sal * v_tax_rate ;
dbms_output.put_line('Ename:'|| v_ename||' Total_Tax:'||v_total_tax);
END;
/
复合变量定义
1、SET SERVEROUTPUT ON
DECLARE
TYPE EMP_RECORD IS RECORD(
name emp.ename % TYPE,
salary emp.sal% TYPE,
title emp.job% TYPE
);
s_emp EMP_RECORD;
BEGIN
SELECT ename,sal,job INTO s_emp FROM emp WHERE empno=&empno;
dbms_output.putline(s_||' '|| s_emp.salary||' '|| s_emp.title);
END;
/
2、SET SERVEROUTPUT ON
DECLARE
TYPE EMP_TABLE IS TABLE OF
emp.ename % TYPE
index by varchar2(20) ;
s_emp EMP_TABLE;
BEGIN
SELECT ename,sal, job INTO s_emp('ename'),s_emp('sal'), s_emp('job') FROM emp WHERE empno=7369;
dbms_output.put_line(s_emp('ename')||'
'||s_emp('sal')||' '||s_emp('job')); END;