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
20130605173121093
更多关于 》》》《 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
图书信息来源: 互动出版网

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16566727/viewspace-763127/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16566727/viewspace-763127/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值