Oracle是一种功能极其强大,并且非常灵活的关系数据库系统。就是因为这种强大的功能和灵活性,致使Oracle非常复杂。为了实现基于Oracle设计有用的应用程序,则有必要理解Oracle是如何操作存储在系统中的数据的。PL/SQL就是这样一种实现数据操作的重要工具,你不仅可以在Oracle内部使用它,而且可以在自己的应用程序中应用它。PL/SQL在许多环境下都是可用的,并且在不同环境下具有不同的优势。 \r\n
译者序\r\n前言\r\n\r\n第一部分 概述及开发环境\r\n\r\n第1章 PL/SQL概述\r\n\r\n1.1 为什么使用PL/SQL\r\n1.1.1 PL/SQL和网络流量\r\n1.1.2 标准\r\n1.2 PL/SQL的功能特性\r\n1.2.1 语句块结构\r\n1.2.2 错误处理\r\n1.2.3 变量和类型\r\n1.2.4 条件语句\r\n1.2.5 循环结构\r\n1.2.6 游标\r\n1.2.7 过程和函数\r\n1.2.8 包\r\n1.2.9 集合\r\n1.3 本书使用的约定\r\n1.3.1 PL/SQL和Oracle版本\r\n1.3.2 Oracle文档\r\n1.3.3 光盘内容\r\n1.4 范例样表\r\n1.5 小结\r\n\r\n第2章 开发及运行环境\r\n\r\n2.1 应用程序模型和PL/SQL\r\n2.1.1 两层模型\r\n2.1.2 三层模型\r\n2.1.3 连接服务器\r\n2.2 PL/SQL开发工具\r\n2.2.1 SQL*Plus\r\n2.2.2 Rapid SQL\r\n2.2.3 DBPartner Debugger\r\n2.2.4 SQL Navigator\r\n2.2.5 TOAD\r\n2.2.6 SQL-programmer\r\n2.2.7 PL/SQL Developer\r\n2.2.8 开发工具小结\r\n2.3 小结\r\n\r\n第二部分 PL/SQL基本特性\r\n\r\n第3章 PL/SQL基础\r\n\r\n3.1 PL/SQL语句块\r\n3.2 词法单元\r\n3.2.1 标识符\r\n3.2.2 分界符\r\n3.2.3 文字\r\n3.2.4 注释\r\n3.3 变量声明\r\n3.3.1 声明语法\r\n3.3.2 变量初始化\r\n3.4 PL/SQL类型\r\n3.4.1 标量类型\r\n3.4.2 复合类型\r\n3.4.3 引用类型\r\n3.4.4 LOB类型\r\n3.4.5 对象类型\r\n3.4.6 使用%TYPE\r\n3.4.7 用户定义子类型\r\n3.4.8 数据类型之间的转换\r\n3.4.9 变量作用域和可见性\r\n3.5 表达式和运算符\r\n3.5.1 赋值\r\n3.5.2 表达式\r\n3.6 PL/SQL控制结构\r\n3.6.1 IF-THEN-ELSE\r\n3.6.2 CASE\r\n3.6.3 循环\r\n3.6.4 GOTO和标号\r\n3.6.5 编译指示\r\n3.7 PL/SQL记录\r\n3.7.1 记录赋值\r\n3.7.2 使用%ROWTYPE\r\n3.8 PL/SQL风格指南\r\n3.8.1 注释风格\r\n3.8.2 变量名风格\r\n3.8.3 大写风格\r\n3.8.4 缩进风格\r\n3.8.5 常见风格\r\n3.9 小结\r\n\r\n第4章 PL/SQL中的SQL\r\n\r\n4.1 SQL语句\r\n4.1.1 在PL/SQL中使用SQL\r\n4.1.2 使用动态SQL\r\n4.2 在PL/SQL中使用DML\r\n4.2.1 SELECT\r\n4.2.2 INSERT\r\n4.2.3 UPDATE\r\n4.2.4 DELETE\r\n4.2.5 WHERE子句\r\n4.2.6 批绑定\r\n4.2.7 RETURNING子句\r\n4.2.8 表引用\r\n4.2.9 数据库链接\r\n4.2.10 同义词\r\n4.3 伪列\r\n4.3.1 CURRVAL和NEXTVAL\r\n4.3.2 LEVEL\r\n4.3.3 ROWID\r\n4.3.4 ROWNUM\r\n4.4 GRANT、REVOKE和权限\r\n4.4.1 对象和系统权限\r\n4.4.2 GRANT和REVOKE\r\n4.4.3 角色\r\n4.5 事务控制\r\n4.5.1 COMMIT和ROLLBACK\r\n4.5.2 保存点\r\n4.5.3 事务和语句块\r\n4.5.4 自治事务\r\n4.6 小结\r\n\r\n第5章 内置SQL函数\r\n\r\n5.1 概述\r\n5.2 返回字符值的字符函数\r\n5.2.1 SUBSTR、SUBSTRB、SUBSTRC、SUBSTR2和SUBSTR4\r\n5.2.2 SOUNDEX\r\n5.3 返回数字值的字符函数\r\n5.3.1 INSTR、INSTRB、INSTRC、INSTR2和INSTR4\r\n5.3.2 LENGTH、LENGTHB、LENGTHC、LENGTH2和LENGTH4\r\n5.4 NLS函数\r\n5.5 数字函数\r\n5.6 日期和时间函数\r\n5.7 转换函数\r\n5.7.1 TO_CHAR(日期和日期时间)\r\n5.7.2 TO_CHAR(数字)\r\n5.7.3 TO_DATE\r\n5.7.4 TO_NUMBER\r\n5.7.5 TO_TIMESTAMP和TO_TIMESTAMP_TZ\r\n5.8 聚集和分析函数\r\n5.9 其他函数\r\n5.9.1 DUMP\r\n5.9.2 USERENV\r\n5.10 小结\r\n\r\n第6章 游标\r\n\r\n6.1 什么是游标\r\n6.1.1 处理显式游标\r\n6.1.2 处理隐式游标\r\n6.2 游标检索循环\r\n6.2.1 简单循环\r\n6.2.2 WHILE循环\r\n6.2.3 游标FOR循环\r\n6.2.4 NO_DATA_FOUND与%NOFTOUND\r\n6.2.5 SELECT FOR UPDATE游标\r\n6.3 游标变量\r\n6.3.1 声明游标变量\r\n6.3.2 为游标变量分配存储空间\r\n6.3.3 为查询打开游标变量\r\n6.3.4 关闭游标变量\r\n6.3.5 游标变量范例一\r\n6.3.6 游标变量范例二\r\n6.3.7 使用游标变量的限制\r\n6.4 小结\r\n\r\n第7章 错误处理\r\n\r\n7.1 什么是异常\r\n7.1.1 声明异常\r\n7.1.2 抛出异常\r\n7.1.3 处理异常\r\n7.1.4 EXCEPTION_INIT编译指示\r\n7.1.5 使用RAISE_APPLICATION_ERROR\r\n7.2 异常传播\r\n7.2.1 可执行部分产生的异常\r\n7.2.2 在声明部分出现的异常\r\n7.2.3 在异常部分产生的异常\r\n7.3 异常准则\r\n7.3.1 异常的作用域\r\n7.3.2 避免未处理异常\r\n7.3.3 指定错误位置\r\n7.4 通用错误处理器\r\n7.5 小结\r\n\r\n第8章 集合\r\n\r\n8.1 声明和使用集合类型\r\n8.1.1 index-by表\r\n8.1.2 嵌套表\r\n8.1.3 可变数组\r\n8.1.4 多层集合\r\n8.1.5 集合类型之间的比较\r\n8.2 数据库中的集合\r\n8.2.1 存储集合的隐含式\r\n8.2.2 操作整个集合\r\n8.2.3 操作单个集合元素\r\n8.3 集合方法\r\n8.3.1 EXISTS\r\n8.3.2 COUNT\r\n8.3.3 LIMIT\r\n8.3.4 FIRST和LAST\r\n8.3.5 NEXT和PRIOR\r\n8.3.6 EXTEND\r\n8.3.7 TRIM\r\n8.3.8 DELETE\r\n8.4 小结\r\n\r\n第三部分 更多PL/SQL特性\r\n\r\n第9章 创建过程、函数和包\r\n\r\n9.1 过程与函数\r\n9.1.1 创建子程序\r\n9.1.2 子程序参数\r\n9.1.3 CALL语句\r\n9.1.4 过程与函数\r\n9.2 包\r\n9.2.1 包的说明\r\n9.2.2 包体\r\n9.2.3 包和范围\r\n9.2.4 重载封装子程序\r\n9.2.5 包的初始化\r\n9.3 小结\r\n\r\n第10章 使用过程、函数和包\r\n\r\n10.1 子程序位置\r\n10.1.1 存储子程序和数据字典\r\n10.1.2 局部子程序\r\n10.1.3 存储子程序与局部子程序\r\n10.2 存储子程序和包的考虑事项\r\n10.2.1 子程序依赖性\r\n10.2.2 包运行时状态\r\n10.2.3 特权和存储子程序\r\n10.3 在SQL语句中使用存储函数\r\n10.3.1 纯度等级\r\n10.3.2 缺省参数\r\n10.3.3 在Oracle8i中从SQL调用存储函数\r\n10.4 在共享池中的锁定\r\n10.4.1 KEEP\r\n10.4.2 UNKEEP\r\n10.4.3 SIZES\r\n10.4.4 ABORTED_REQUEST_THRESHOLD\r\n10.5 小结\r\n\r\n第11章 数据库触发器\r\n\r\n11.1 触发器的类型\r\n11.2 创建触发器\r\n11.2.1 创建DML触发器\r\n11.2.2 创建Instead-Of触发器\r\n11.2.3 创建系统触发器\r\n11.2.4 其他触发器问题\r\n11.2.5 触发器和数据字典\r\n11.3 变异表\r\n11.3.1 变异表的例子\r\n11.3.2 变异表错误的解决\r\n11.4 小结\r\n\r\n第12章 高级特性\r\n\r\n12.1 语言特性\r\n12.1.1 外部例程\r\n12.1.2 本地动态SQL\r\n12.1.3 成批绑定\r\n12.1.4 对象类型\r\n12.1.5 大对象\r\n12.1.6 管道化表函数\r\n12.2 高级包\r\n12.2.1 DBMS_SQL\r\n12.2.2 DBMS_PIPE\r\n12.2.3 DBMS_ALERT\r\n12.2.4 UTL_FILE\r\n12.2.5 UTL_TCP\r\n12.2.6 UTL_SMTP\r\n12.2.7 UTL_HTTP\r\n12.2.8 UTL_INADDR\r\n12.2.9 DBMS_JOB\r\n12.2.10 DBMS_LOB\r\n12.3 小结\r\n\r\n附录\r\n\r\n附录A 包指南\r\n附录B PL/SQL保留字\r\n附录C 数据字典