阅读 119

Oracle PL/SQL攻略

《Oracle PL/SQL攻略》

基本信息

原书名:Oracle and PL/SQL recipes:a problem-solution approach

作者: (美)Josh Juneau    Matt Arena   

译者: 任政委

丛书名: 图灵程序设计丛书

出版社:人民邮电出版社

ISBN:9787115320766

上架时间:2013-6-4

出版日期:2013 年6月

开本:16开

页码:376

版次:1-1

所属分类:计算机 > 数据库 > Oracle


更多关于 》》》《 Oracle PL/SQL攻略

内容简介

    计算机书籍

《oracle pl/sql攻略》是pl/sql 各类症结的治病良方。全书共分为17 章,分别介绍pl/sql 的不同方面,包括pl/sql基础知识、sql 常见任务、触发器、异常处理、oracle sql developer、分析并提高性能等。本书组织结构别具一格,通篇采用“问题—解决方案—原理分析”的形式。每节分别介绍一个实际案例,内容自成一体、相互独立、由浅入深。

pl/sql是oracle数据库对sql语言的扩展,它开启了数据库中业务逻辑集中化的大门。借助于pl/sql,oracle的很多最新特性都得以崭露头角。pl/sql也是非常成功的oracle application express的基石。本书两位作者都具有20多年的数据库应用开发经验,对使用pl/sql操作oracle数据库的各种问题了如指掌。在本书中,作者将多年的实战经验总结为具体案例,通过“问题—原理分析—解决方案”的形式,介绍相关问题的破解方法。本书组织结构别具一格,内容由浅入深,读者只需浏览目录,从中找到你所面临的难题,对相关代码略作修改,难题便可迎刃而解。

《oracle pl/sql攻略》可引领新手走进pl/sql 世界,也可帮助专业人士在pl/sql 世界中所向披靡。

目录

《oracle pl/sql攻略》 

第1章 pl/sql 基础 1 

1.1 创建代码块 1 

问题 1 

解决方案 1 

原理分析 1 

1.2 在sql*plus 里执行代码块 2 

问题 2 

解决方案 2 

原理分析 2 

1.3 把代码保存到脚本中 3 

问题 3 

解决方案 3 

原理分析 3 

1.4 执行脚本 4 

问题 4 

解决方案 4 

原理分析 4 

1.5 接受用户键盘输入 5 

问题 5 

.解决方案 5 

原理分析 5 

1.6 在sql*plus 里显示结果 7 

问题 7 

解决方案 7 

原理分析 7 

1.7 在代码中添加注释 8 

问题 8 

解决方案 8 

原理分析 8 

1.8 引用代码块 9 

问题 9 

解决方案 9 

原理分析 9 

1.9 从嵌套块中引用变量 10 

问题 10 

解决方案 10 

原理分析 11 

1.10 忽略替换变量 11 

问题 11 

解决方案1 11 

解决方案2 11 

原理分析 12 

1.11 改变替换变量字符 12 

问题 12 

解决方案 13 

原理分析 13 

1.12 创建匹配数据库列类型的变量 13 

问题 13 

解决方案 13 

原理分析 14 

第2章 基本的sql 操作 15 

2.1 从数据库检索单行数据 15 

问题 15 

解决方案1 15 

解决方案2 16 

原理分析 17 

2.2 限定列名与变量名 18 

问题 18 

解决方案 18 

原理分析 19 

2.3 声明与列类型匹配的变量类型 19 

问题 19 

解决方案 19 

原理分析 20 

2.4 把查询结果返回到pl/sql 记录中 20 

问题 20 

解决方案 20 

原理分析 21 

2.5 创建自定义记录来接收查询结果 21 

问题 21 

解决方案 22 

原理分析 22 

2.6 循环遍历查询的行结果 23 

问题 23 

解决方案1 23 

解决方案2 23 

原理分析 24 

2.7 获取环境与会话信息 24 

问题 24 

解决方案 24 

原理分析 25 

2.8 格式化查询结果 27 

问题 27 

解决方案 27 

原理分析 28 

2.9 更新查询返回的结果行 28 

问题 28 

解决方案 28 

原理分析 29 

2.10 更新游标返回的行结果 30 

问题 30 

解决方案 30 

原理分析 31 

2.11 删除游标返回的行结果 31 

问题 31 

解决方案 31 

原理分析 32 

2.12 执行事务 32 

问题 32 

解决方案 32 

原理分析 33 

2.13 确保相同的数据对多个查询“可见” 34 

问题 34 

解决方案 34 

原理分析 34 

2.14 从事务中执行另一个独立事务 35 

问题 35 

解决方案 35 

原理分析 36 

2.15 找到并删除重复行数据 37 

问题 37 

解决方案 37 

原理分析 38 

第3章 循环与逻辑 39 

3.1 选择执行代码的时机 39 

问题 39 

解决方案 39 

原理分析 40 

3.2 两个互斥条件中的抉择 40 

问题 40 

解决方案 40 

原理分析 41 

3.3 多个互斥条件求值 41 

问题 41 

解决方案1 41 

解决方案2 42 

原理分析 43 

3.4 一个有着多个输出结果的表达式 44 

问题 44 

解决方案 44 

原理分析 45 

3.5 循环直至满足指定条件 45 

问题 45 

解决方案 45 

原理分析 46 

3.6 遍历游标结果直到所有行结果都被返回 46 

问题 46 

解决方案 46 

原理分析 47 

3.7 循环直到条件为false 47 

问题 47 

解决方案 47 

原理分析 48 

3.8 跳过当前循环迭代 48 

问题 48 

解决方案 48 

原理分析 49 

3.9 迭代固定次数 50 

问题 50 

解决方案 50 

原理分析 50 

3.10 逆向迭代 51 

问题 51 

解决方案 51 

原理分析 51 

3.11 指定其他循环增量 52 

问题 52 

解决方案 52 

原理分析 52 

3.12 使用奇数作为级数进行遍历 52 

问题 52 

解决方案 53 

原理分析 53 

3.13 退出外层循环 53 

问题 53 

解决方案 53 

原理分析 54 

3.14 跳转到代码中的指定位置 55 

问题 55 

解决方案 55 

原理分析 56 

第4章 函数、过程与包 57 

4.1 创建存储函数 57 

问题 57 

解决方案 57 

原理分析 58 

4.2 从查询中执行存储函数 60 

问题 60 

解决方案 61 

原理分析 61 

4.3 优化对于某一输入总是返回相同结果的函数 62 

问题 62 

解决方案 62 

原理分析 62 

4.4 创建存储过程 63 

问题 63 

解决方案 63 

原理分析 64 

4.5 执行存储过程 64 

问题 64 

解决方案 65 

原理分析 65 

4.6 在过程或代码块中创建函数 66 

问题 66 

解决方案 66 

原理分析 67 

4.7 按名称传递参数 67 

问题 67 

解决方案 67 

原理分析 67 

4.8 设置默认参数值 68 

问题 68 

解决方案 68 

原理分析 68 

4.9 组织相关程序形成一个独立单元 69 

问题 69 

解决方案 69 

原理分析 70 

4.10 为包编写初始化代码 71 

问题 71 

解决方案 71 

原理分析 72 

4.11 授予存储程序的创建与执行权限 73 

问题 73 

解决方案 73 

原理分析 73 

4.12 执行包中的过程和函数 73 

问题 73 

解决方案 73 

原理分析 74 

4.13 为存储程序创建公有名称 74 

问题 74 

解决方案 74 

原理分析 75 

4.14 依次执行包程序 75 

问题 75 

解决方案 75 

原理分析 76 

4.15 使用失败标志 77 

问题 77 

解决方案 77 

原理分析 78 

4.16 将数据访问限制在包内 79 

问题 79 

解决方案 79 

原理分析 79 

4.17 在你的权限集合下运行存储代码 80 

问题 80 

解决方案 80 

原理分析 80 

4.18 在一个函数中接受多个参数集合 81 

问题 81 

解决方案 81 

原理分析 81 

4.19 列举模式中的函数、过程和包 82 

问题 82 

解决方案 82 

原理分析 82 

4.20 查看存储程序源代码 82 

问题 82 

解决方案 82 

原理分析 83 

第5章 触发器 85 

5.1 自动生成列值 85 

问题 85 

解决方案 85 

原理分析 86 

5.2 保持关系数据同步 87 

问题 87 

解决方案 87 

原理分析 88 

5.3 响应表的特定列更新 89 

问题 89 

解决方案 89 

原理分析 89 

5.4 可更新的视图 90 

问题 90 

解决方案 90 

原理分析 92 

5.5 改变应用程序的功能 92 

问题 92 

解决方案 93 

原理分析 93 

5.6 验证输入数据 94 

问题 94 

解决方案 95 

原理分析 95 

5.7 修正输入数据 95 

问题 95 

解决方案 95 

原理分析 96 

5.8 替换列值 96 

问题 96 

解决方案 96 

原理分析 97 

5.9 基于系统事件的触发器 98 

问题 98 

解决方案 98 

原理分析 99 

5.10 与模式事件相关的触发器 100 

问题 100 

解决方案 100 

原理分析 101 

5.11 同一事件激活两个触发器 102 

问题 102 

解决方案 102 

原理分析 103 

5.12 创建响应多个事件的触发器 103 

问题 103 

解决方案 103 

原理分析 105 

5.13 创建禁用状态的触发器106 

问题 106 

解决方案 106 

原理分析 107 

第6章 类型转换 108 

6.1 把字符串转换成数字 108 

问题 108 

解决方案 108 

原理分析 109 

6.2 把字符串转换成日期 109 

问题 109 

解决方案 109 

原理分析 110 

6.3 把数字转换成字符串 111 

问题 111 

解决方案 111 

原理分析 111 

6.4 把日期转换成字符串 112 

问题 112 

解决方案 112 

原理分析 113 

6.5 把字符串转换成时间戳 115 

问题 115 

解决方案 115 

原理分析 116 

6.6 利用ansi 兼容的方式进行格式转换 116 

问题 116 

解决方案 116 

原理分析 117 

6.7 pls_integer 与number 之间的隐式转换 118 

问题 118 

解决方案 118 

原理分析 119 

第7章 数字、字符串和日期 120 

7.1 字符串拼接 120 

问题 120 

解决方案 120 

原理分析 121 

7.2 为日期增加天数 121 

问题 121 

解决方案 121 

原理分析 121 

7.3 为日期增加月数 122 

问题 122 

解决方案 122 

原理分析 123 

7.4 为日期增加年数 123 

问题 123 

解决方案 123 

原理分析 124 

7.5 获取两个日期之间的间隔天数 125 

问题 125 

解决方案 125 

原理分析 125 

7.6 为日期增加小时数、分钟数、秒数或天数 126 

问题 126 

解决方案 126 

原理分析 127 

7.7 返回指定月份的第一天 129 

问题 129 

解决方案 129 

原理分析 129 

7.8 返回月份的最后一天 130 

问题 130 

解决方案 130 

原理分析 130 

7.9 数字的四舍五入 130 

问题 130 

解决方案 130 

原理分析 131 

7.10 对日期时间值进行四舍五入 131 

问题 131 

解决方案 131 

原理分析 131 

7.11 以毫秒单位来跟踪时间 132 

问题 132 

解决方案 132 

原理分析 133 

7.12 把时区与日期和时间关联 133 

问题 133 

解决方案 133 

原理分析 133 

7.13 利用样式在字符串中搜索 134 

问题 134 

解决方案 134 

原理分析 134 

7.14 确定指定样式在字符串中的位置 135 

问题 135 

解决方案 135 

原理分析 136 

7.15 字符串的查找与替换 137 

问题 137 

解决方案 137 

原理分析 138 

第8章 动态sql 139 

8.1 执行编译时无法确定的单行查询 139 

问题 139 

解决方案1 139 

解决方案2 140 

原理分析1 141 

原理分析2 142 

8.2 执行编译时无法确定的多行查询 142 

问题 142 

解决方案1 143 

解决方案2 143 

原理分析 144 

8.3 编写动态insert 语句 145 

问题 145 

解决方案1 145 

解决方案2 146 

原理分析 147 

8.4 编写动态更新语句 148 

问题 148 

解决方案 148 

原理分析 151 

8.5 编写动态删除语句 151 

问题 151 

解决方案 151 

原理分析 152 

8.6 把动态查询结果数据放入记录中 153 

问题 153 

解决方案 153 

原理分析 154 

8.7 执行动态pl/sql 块 154 

问题 154 

解决方案1 154 

解决方案2 155 

原理分析 155 

8.8 运行时创建表 156 

问题 156 

解决方案 156 

原理分析 156 

8.9 运行时修改表 157 

问题 157 

解决方案 157 

原理分析 157 

8.10 查找出包含特殊字段值的所有表 158 

问题 158 

解决方案 158 

原理分析 160 

8.11 在大对象中保存动态sql 161 

问题 161 

解决方案1 161 

解决方案2 162 

原理分析 162 

8.12 向动态sql 传递null 值 163 

问题 163 

解决方案 163 

原理分析 164 

8.13 在dmbs_sql 与原生动态sql 间切换 164 

问题 164 

解决方案 164 

原理分析 166 

8.14 防止sql 注入攻击166 

问题 166 

解决方案 166 

原理分析 167 

第9章 异常 169 

9.1 捕获异常 169 

问题 169 

解决方案 169 

原理分析 171 

9.2 捕获未知异常 173 

问题 173 

解决方案 173 

原理分析 175 

9.3 创建并抛出命名的自定义异常 175 

问题 175 

解决方案 175 

原理分析 177 

9.4 判断others 处理程序中发生了哪个错误 177 

问题 177 

解决方案 177 

原理分析 179 

9.5 抛出用户定义异常 180 

问题 180 

解决方案 181 

原理分析 181 

9.6 在异常抛出后重定向控制权 182 

问题 182 

解决方案 183 

原理分析 184 

9.7 抛出异常并继续处理 184 

问题 184 

解决方案 184 

原理分析 185 

9.8 将无名异常与错误号关联 185 

问题 185 

解决方案 186 

原理分析 186 

9.9 追踪异常源 187 

问题 187 

解决方案 187 

原理分析 189 

9.10 显示pl/sql 编译器警告 190 

问题 190 

解决方案 190 

原理分析 191 

第10章 pl/sql 集合与记录 193 

10.1 创建并访问varray 193 

问题 193 

解决方案 193 

原理分析 194 

10.2 创建并访问索引表 194 

问题 194 

解决方案 194 

原理分析 195 

10.3 创建简单的记录 195 

问题 195 

解决方案 195 

原理分析 195 

10.4 创建并访问记录集合 196 

问题 196 

解决方案 196 

原理分析 196 

10.5 创建并访问哈希数组集合 197 

问题 197 

解决方案 197 

原理分析 198 

10.6 创建并访问复杂的集合 198 

问题 198 

解决方案 198 

原理分析 200 

10.7 将集合作为调用参数使用 201 

问题 201 

解决方案 201 

原理分析 202 

10.8 将集合作为返回参数使用 202 

问题 202 

解决方案 202 

原理分析 203 

10.9 计算集合元素个数 203 

问题 203 

解决方案 204 

原理分析 204 

10.10 从集合中删除记录 204 

问题 204 

解决方案 205 

原理分析 205 

10.11 检查集合中是否存在指定的元素 206 

问题 206 

解决方案 206 

原理分析 207 

10.12 增加集合大小 207 

问题 207 

解决方案 207 

原理分析 208 

10.13 集合导航 208 

问题 208 

解决方案 208 

原理分析 209 

10.14 对集合进行修剪 209 

问题 209 

解决方案 209 

原理分析 210 

第11章 自动化日常任务 211 

11.1 调度重复性作业 211 

问题 211 

解决方案 211 

原理分析 211 

11.2 用电子邮件发送调度作业的输出 212 

问题 212 

解决方案 212 

原理分析 213 

11.3 用电子邮件发送作业状态通知 213 

问题 213 

解决方案 213 

原理分析 213 

11.4 按固定时间间隔刷新物化视图 214 

问题 214 

解决方案 214 

原理分析 216 

11.5 与远程数据源保持数据同步 216 

问题 216 

解决方案 217 

原理分析 218 

11.6 计划作业链 218 

问题 218 

解决方案 218 

原理分析 221 

第12章 oracle sql developer 223 

12.1 创建标准的授权数据库连接 223 

问题 223 

解决方案 223 

原理分析 224 

12.2 获取表的信息 225 

问题 225 

解决方案 225 

原理分析 226 

12.3 启用显示输出功能 227 

问题 227 

解决方案 227 

原理分析 227 

12.4 编写并执行pl/sql 228 

问题 228 

解决方案 228 

原理分析 229 

12.5 创建并执行脚本 231 

问题 231 

解决方案 231 

原理分析 232 

12.6 将用户的输入值当作替代变量 233 

问题 233 

解决方案 233 

原理分析 233 

12.7 保存可以快速访问的代码片段 234 

问题 234 

解决方案 234 

原理分析 234 

12.8 创建函数 236 

问题 236 

解决方案 236 

原理分析 237 

12.9 创建存储过程 239 

问题 239 

解决方案 239 

原理分析 240 

12.10 创建包说明和包体 243 

问题 243 

解决方案 243 

原理分析 243 

12.11 创建触发器 247 

问题 247 

解决方案 247 

原理分析 247 

12.12 调试存储代码 250 

问题 250 

解决方案 250 

原理分析 250 

12.13 在导航器中编译代码 252 

问题 252 

解决方案 253 

原理分析 253 

第13章 性能分析与改进 254 

13.1 安装dbms_profiler 254 

问题 254 

解决方案 254 

原理分析 255 

13.2 找出瓶颈 255 

问题 255 

解决方案 255 

原理分析 256 

13.3 加速读写循环 257 

问题 257 

解决方案 257 

原理分析 258 

13.4 将较大集合或复杂集合作为out参数使用 259 

问题 259 

解决方案 259 

原理分析 260 

13.5 优化计算密集型代码 260 

问题 260 

解决方案 261 

原理分析 261 

13.6 改善运行时的初始化时间 262 

问题 262 

解决方案 262 

原理分析 262 

第14章 在web 中使用pl/sql 263 

14.1 在web 上运行pl/sql 过程 263 

问题 263 

解决方案 263 

原理分析 264 

14.2 创建生成html 页面的公用过程集合 265 

问题 265 

解决方案 265 

原理分析 266 

14.3 创建输入表单 267 

问题 267 

解决方案 267 

原理分析 268 

14.4 用pl/sql 创建基于web 的报表 270 

问题 270 

解决方案 270 

原理分析 272 

14.5 显示表中的数据 273 

问题 273 

解决方案 273 

原理分析 274 

14.6 通过数据库查询创建web 表单下拉列表 274 

问题 274 

解决方案 274 

原理分析 275 

14.7 创建可排序web 报表 276 

问题 276 

解决方案 276 

原理分析 278 

14.8 在web 页面之间传递数据 279 

问题 279 

解决方案 279 

原理分析 280 

14.9 查看调试web 程序时发生的错误信息 280 

问题 280 

解决方案 281 

原理分析 281 

14.10 用pl/sql 生成javascript 282 

问题 282 

解决方案 282 

原理分析 283 

14.11 生成xml 数据 284 

问题 284 

解决方案 284 

原理分析 285 

14.12 用ajax 创建一个输入表单 286 

问题 286 

解决方案 286 

原理分析 287 

第15章 数据库中的java 应用 289 

15.1 创建java 数据库类 289 

问题 289 

解决方案 289 

原理分析 290 

15.2 把java 类装载到数据库中 291 

问题 291 

原理分析 293 

15.3 把编译后的java 类装载到数据库中 293 

问题 293 

解决方案 293 

原理分析 294 

15.4 把java 类声明为存储过程 294 

问题 294 

解决方案 295 

原理分析 295 

15.5 执行java 存储过程 295 

问题 295 

解决方案 295 

原理分析 296 

15.6 从pl/sql 代码中调用java 存储过程 296 

问题 296 

解决方案 296 

原理分析 297 

15.7 在pl/sql 与java 之间传递参数 298 

问题 298 

解决方案 298 

原理分析 299 

15.8 创建与调用java 数据库函数 300 

问题 300 

解决方案 300 

原理分析 301 

15.9 创建java 数据库触发器 301 

问题 301 

解决方案 301 

原理分析 303 

15.10 从pl/sql 往java 中传递数据对象 303 

问题 303 

解决方案 303 

原理分析 305 

15.11 把java 类嵌入pl/sql 包 306 

问题 306 

解决方案 306 

原理分析 307 

15.12 向数据库中装载java 类库 307 

问题 307 

解决方案 307 

原理分析 309 

15.13 删除java 类 309 

问题 309 

解决方案 310 

原理分析 310 

15.14 用java 检索数据库元数据 310 

问题 310 

解决方案 310 

原理分析 311 

15.15 查询数据库以解决java 编译问题 311 

问题 311 

解决方案 311 

原理分析 312 

第16章 从jdbc、 http、 groovy 和jython 中访问pl/sql 313 

16.1 通过jdbc 访问pl/sql 存储过程 313 

问题 313 

解决方案 313 

原理分析 315 

16.2 从jdbc 中访问pl/sql 存储函数 316 

问题 316 

解决方案 316 

原理分析 317 

16.3 通过http 访问pl/sql 过程 318 

问题 318 

解决方案 318 

原理分析 321 

16.4 从jython 中访问pl/sql 322 

问题 322 

原理分析 324 

16.5 从groovy 访问pl/sql 325 

问题 325 

解决方案 325 

原理分析 325 

第17章 用utplsql 进行单元测试 327 

17.1 使用单元测试来测试pl/sql 代码 327 

问题 327 

解决方案 327 

原理分析 329 

17.2 安装utplsql 单元测试框架 329 

问题 329 

解决方案 329 

原理分析 330 

17.3 构建utplsql 测试包 331 

问题 331 

解决方案 331 

原理分析 332 

17.4 编写utplsql 单元测试过程 332 

问题 332 

解决方案 333 

原理分析 334 

17.5 运行utplsql 测试 335 

问题 335 

解决方案 335 

原理分析 338 

17.6 构建utplsql 测试套件 338 

问题 338 

解决方案 338 

原理分析 338 

17.7 运行utplsql 测试套件 339 

问题 339 

解决方案 339 

原理分析 345 

17.8 重新配置utplsql 参数 345 

问题 345 

解决方案 346 

原理分析 346 

17.9 将utplsql 测试结果重定向到文件 348 

问题 348 

解决方案 348 

原理分析 348 

17.10 用ant 自动运行pl/sql 和java存储过程的单元测试 349 

问题 349 

解决方案 350 

原理分析 351 

索引 355


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐