ORACLE存储过程培训文档.doc
文本预览下载声明
河北综合客服设计文档
设计说明书
Oracle存储过程
2007年7月
大唐软件技术股份有限公司
Copyright By CATTSoft. All Rights Reserved
版本修订历史
起止日期 作者/修订人 更改章节 修改描述 版本/状态 2007-7 赵振明 初始创建 1.0
目 录
1. PL/SQL语言简介 1
2. 调试运行环境说明 8
3. 技术参考资料 10
PL/SQL语言简介
1.1 PL/SQL简介
PL/SQL是ORACLE的过程化语言,包括一整套的数据类型、条件结构、循环结构和异常处理结构,PL/SQL可以执行SQL语句,SQL语句中也可以使用PL/SQL函数。
1.2 创建PL/SQL程序块
DECLARE…BEGIN…EXCEPTIONEND;1.3 PL/SQL数据类型
名称 类型 说明 NUMBER 数字型 能存放整数值和实数值,并且可以定义精度和取值范围 BINARY_INTEGER 数字型 可存储带符号整数,为整数计算优化性能 DEC 数字型 NUMBER的子类型,小数 DOUBLE PRECISION 数字型 NUMBER的子类型,高精度实数 INTEGER 数字型 NUMBER的子类型,整数 INT 数字型 NUMBER的子类型,整数 NUMERIC 数字型 NUMBER的子类型,与NUMBER等价 REAL 数字型 NUMBER的子类型,与NUMBER等价 SMALLINT 数字型 NUMBER的子类型,取值范围比INTEGER小 VARCHAR2 字符型 存放可变长字符串,有最大长度 CHAR 字符型 定长字符串 LONG 字符型 变长字符串,最大长度可达32,767 DATE 日期型 以数据库相同的格式存放日期值 BOOLEAN 布尔型 TRUE OR FALSE ROWID ROWID 存放数据库的行号 例子:DECLAREORDER_NO NUMBER(3); CUST_NAME VARCHAR2(20); ORDER_DATE DATE; EMP_NO INTEGER:=25; PI CONSTANT NUMBER:=3.1416;BEGIN NULL;END;1.4 处理PL/SQL的异常
1.4.1 PL/SQL的异常
例如:DECLARE X NUMBER;BEGIN X:= yyyy;--Error HereEXCEPTION WHEN VALUE_ERROR THEN DBMS_OUTPUT.PUT_LINE(EXCEPTION HANDED);END;
实现技术:EXCEPTION WHEN first_exception THEN…WHEN second_exception THEN…WHEN OTHERS THEN /*THERS异常处理器必须排在最后,它处理所有没有明确列出的异常。*/…END;
1.4.2 预定义异常
异常名称 ORACLE错误 说明 CURSOR_ALREADY_OPEN ORA-6511 试图打开一个已打开的光标 DUP_VAL_ON_INDEX ORA-0001 试图破坏一个唯一性限制 INVALID_CURSOR ORA-1001 试图使用一个无效的光标 INVALID_NUMBER ORA-1722 试图对非数字值进行数字操作 LOGIN_DENIED ORA-1017 无效的用户名或者口令 NO_DATA_FOUND ORA-1403 查询未找到数据 NOT_LOGGED_ON ORA-1012 还未连接就试图数据库操作 PROGRAM_ERROR ORA-6501 内部错误 ROWTYPE_MISMATCH ORA-6504 主变量和光标的类型不兼容 STORAGE_ERROR ORA-6500 内部错误 TIMEOUT_ON_RESOURCE ORA-0051 发生超时 TOO_MANY_ROWS ORA-1422 SELECT INTD命令返回的多行 TRANSACTION_BACKED_OUT ORA-006 由于死锁提交被退回 VALUE_ERROR ORA-6502 转换或者裁剪错误 ZERO_DIVIDE ORA-1476 试图被零除
1.4.3 自定义异常处理
DECLARE BAD_ROWID EXCEPTION; X ROWID;PRAGMA EXCEPTION_INIT(BAD_ROWID,-01445);BEGIN SELECT
显示全部