《图灵程序设计丛书 Oracle PL/SQL攻略》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)朱诺,(美)阿里纳著;任政委译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2013
  • ISBN:9787115320766
  • 页数:357 页
图书介绍:本书是PL/SQL各类症结的治病良方。全书共分为17章,分别介绍了PL/SQL的不同方面,包括PL/SQL基础知识、SQL常见任务、触发器、异常处理、Oracle SQL Developer、分析并提高性能等。本书组织结构别具一格,通篇采用“问题-解决方案-原理分析”的形式。每节分别介绍一个实际案例,内容自成一体、相互独立、由浅入深。

第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_ SOL与原生动态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