《Oracle PL/SQL程序设计 下 第6版》PDF下载

  • 购买积分:27 如何计算积分?
  • 作  者:(美)Steven Feuerstein,(美)Bill Pribyl著;方鑫译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2017
  • ISBN:7115448752
  • 页数:1090 页
图书介绍:本书介绍PL/SQL的新特性,包括数据类型和声明、扩展正则表达式、本地化代码生成、性能优化工具、分级优化器、动态SQL优化、PL/SQL表达式序列化等。内容涵盖语法、特性、最佳实践、最优化建议以及扩展代码。

第5部分 构造PL/SQL应用程序 497

第17章 过程、函数和参数 497

17.1代码模块化 497

17.2过程 499

17.2.1调用一个过程 501

17.2.2过程头部 501

17.2.3过程体 501

17.2.4 END标签 502

17.2.5 RETURN语句 502

17.3函数 502

17.3.1函数的结构 503

17.3.2返回的数据类型 504

17.3.3 END标签 506

17.3.4调用函数 506

17.3.5不带参数的函数 507

17.3.6函数头 508

17.3.7函数体 508

17.3.8 RETURN语句 509

17.4参数 510

17.4.1定义参数 511

17.4.2实参和形参 511

17.4.3参数模式 512

17.4.4在PL/SQL中显式地关联实参和形参 515

17.4.5 NOCOPY参数模式限定符 519

17.4.6缺省值 519

17.5局部或者嵌套模块 520

17.5.1使用局部模块的益处 521

17.5.2局部模块的作用范围 523

17.5.3用局部模块使得代码更整洁 524

17.6模块的重载 524

17.6.1重载的益处 525

17.6.2重载的限制 528

17.6.3数字类型的重载 528

17.7前置声明 529

17.8高级主题 530

17.8.1在SQL内部调用我们的函数 530

17.8.2表函数 536

17.8.3确定性函数 545

17.8.4隐式游标结果(Oracle数据库12c) 546

17.9将模块化进行到底 547

第18章 程序包 548

18.1为什么使用程序包 548

18.1.1演示程序包的能力 549

18.1.2与程序包相关的一些概念 552

18.1.3图示私有性 553

18.2构建程序包的规则 554

18.2.1程序包说明 554

18.2.2包体 555

18.2.3包的初始化 557

18.3包元素的调用规则 561

18.4使用包数据 562

18.4.1在一个Oracle会话内全局可见 562

18.4.2全局公有数据 563

18.4.3包游标 563

18.4.4包的串行化 568

18.5何时使用包 570

18.5.1封装对数据的访问 570

18.5.2避免直接量的硬编码 573

18.5.3提高内置特性的可用性 575

18.5.4把逻辑上相关的功能组织在一起 576

18.5.5缓存静态的会话数据 576

18.6包和对象类型 577

第19章 触发器 578

19.1 DML触发器 579

19.1.1 DML触发器的概念 580

19.1.2创建DML触发器 581

19.1.3 DML触发器的例子:严禁作弊! 586

19.1.4同一类型的多个触发器 591

19.1.5如何对触发顺序排序 592

19.1.6突变表的错误 594

19.1.7复合触发器:聚在一处 595

19.2 DDL触发器 598

19.2.1创建DDL触发器 598

19.2.2可用事件 600

19.2.3可用属性 601

19.2.4使用事件和属性 602

19.2.5删除不可删除的 606

19.2.6 INSTEAD OFCREATE触发器 606

19.3数据库事件触发器 607

19.3.1创建数据库事件触发器 608

19.3.2 STARTUP触发器 609

19.3.3 SHUTDOWN触发器 610

19.3.4 LOGON触发器 610

19.3.5 LOGOFF触发器 610

19.3.6 SERVERERROR触发器 611

19.4 INSTEAD OF触发器 615

19.4.1创建INSTEAD OF触发器 615

19.4.2 INSTEAD OF INSERT触发器 616

19.4.3 INSTEAD OF UPDATE触发器 618

19.4.4 INSTEAD OF DELETE触发器 619

19.4.5填充表 619

19.4.6嵌套表的INSTEAD OF触发器 620

19.5 AFTER SUSPEND触发器 621

19.5.1建立AFTER SUSPEND触发器 622

19.5.2看看真实的触发器 623

19.5.3 ORA SPACE ERROR INFO函数 624

19.5.4 DBMS RESUMABLE包 625

19.5.5捕获多个时间 626

19.5.6是否该处理? 627

19.6维护触发器 628

19.6.1禁用、启用以及删除触发器 628

19.6.2创建一个禁用的触发器 628

19.6.3查看触发器 629

19.6.4检查触发器的有效性 630

第20章 管理PL/SQL代码 631

20.1管理数据库内的代码 632

20.1.1数据字典视图概述 632

20.1.2显示存储对象的信息 634

20.1.3源代码的显示和搜索 635

20.1.4根据程序的大小确定Pinning需求 637

20.1.5获得存储代码的属性 637

20.1.6通过视图分析和更改触发器状态 638

20.1.7分析参数信息 639

20.1.8分析标识符的使用(Oracle数据库11g的PL/Scope) 640

20.2管理依赖关系及重编译代码 643

20.2.1通过数据字典视图分析依赖关系 643

20.2.2细粒度依赖(Oracle数据库11g) 647

20.2.3远程依赖 648

20.2.4 Oracle的远程调用模式的限制 650

20.2.5重编译无效的程序单元 651

20.3编译时刻警告 655

20.3.1一个快速示例 655

20.3.2开启编译时刻告警 656

20.3.3一些有用的警告 657

20.4测试PL/SQL程序 664

20.4.1典型的、华而不实的测试技术 665

20.4.2 PL/SQL代码测试的一般建议 668

20.4.3 PL/SQL的自动测试选项 669

20.5跟踪PL/SQL的执行 670

20.5.1 DBMS UTILITY.FORMATCALL STACK 671

20.5.2 UTL CALL STACK(Oracle数据库12c) 673

20.5.3 DBMS APPLICATION INFO 676

20.5.4使用opp_ trace进行跟踪 677

20.5.5 DBMS TRACE工具包 678

20.6 PL/SQL程序的调试 681

20.6.1错误的调试方法 682

20.6.2调试技巧和策略 683

20.7使用白名单来控制对程序单元的访问 687

20.8存储代码的保护 689

20.8.1封装的约束和局限 690

20.8.2使用封装程序 690

20.8.3使用DBMS DDL进行动态封装 690

20.8.4封装代码的使用指导 691

20.9基于版本的重定义(Oracle数据库11 g R2版本) 692

第21章PL/SQL的性能优化 695

21.1辅助优化的工具 696

21.1.1内存使用分析 696

21.1.2发现PL/SQL代码中的瓶颈 697

21.1.3计算花费时间 701

21.1.4选择最快的程序 703

21.1.5避免无限循环 704

21.1.6性能相关的警告 706

21.2优化编译器 706

21.2.1优化器工作原理 707

21.2.2循环Fetch操作的运行时优化 710

21.3数据缓存技术 710

21.3.1基于包的缓存 711

21.3.2确定性函数的缓存 716

21.3.3函数结果缓存(Oracle数据库11g) 718

21.3.4缓存总结 731

21.4重复的SQL的语句批处理 732

21.4.1通过BULK COLLECT加速查询 733

21.4.2使用FORALL加速DML 739

21.5利用管道化的表函数提升性能 749

21.5.1用基于管道化函数的加载方式替换基于行的插入 750

21.5.2用管道函数调优Merge操作 756

21.5.3用并行管道函数进行异步数据导出 758

21.5.4并行管道函数中的分区和流子句对性能的影响 761

21.5.5管道函数和基于成本的优化器 763

21.5.6用管道函数优化负载的数据加载 768

21.5.7管道函数结束语 775

21.6专用的优化技术 775

21.6.1使用NOCOPY参数模式提示符 775

21.6.2使用正确的数据类型 778

21.6.3 SQL(12.1及更高版本)的函数性能优化 779

21.7性能回顾 780

第22章I/O操作和PL/SQL 781

22.1显示信息 781

22.1.1启用DBMS OUTPUT 782

22.1.2向缓存中写入行 782

22.1.3从缓存中读取内容 783

22.2文件的读写 784

22.2.1 UTL_ FILE_ DIR参数 784

22.2.2使用Oracle目录 786

22.2.3打开文件 787

22.2.4文件已经打开了吗? 789

22.2.5关闭文件 789

22.2.6读取文件 790

22.2.7向文件中写 792

22.2.8复制文件 795

22.2.9删除文件 795

22.2.10改名和移动文件 796

22.2.11提取文件属性 797

22.3发送邮件 798

22.3.1 Oracle的前提条件 798

22.3.2设置网络安全 799

22.3.3发送一个短的(小于32767字节)的纯文本消息 799

22.3.4在邮件地址中加上“界面友好的”的名字 801

22.3.5发送任意长度的纯文本消息 802

22.3.6发送带有小附件(小于32767字节)的消息 803

22.3.7以附件形式发送一个小文件(小于32767字节) 805

22.3.8任意大小的附件 805

22.4使用基于Web的数据 (HTTP ) 808

22.4.1“分片”获得一个Web页面 808

22.4.2把页面提取到一个LOB中 809

22.4.3使用HTTP的用户名/密码验证 810

22.4.4获取一个SSL加密的Web页面(使用HTTPS) 811

22.4.5通过GET或者POST向Web页面提交数据 812

22.4.6禁用cookie或者使cookie持久化 816

22.4.7从FTP服务器获取数据 816

22.4.8使用代理服务器 817

22.5 PL/SQL中可用的其他I/O类型 817

22.5.1数据库管道、队列、告警 817

22.5.2 TCPSocket 818

22.5.3 Oracle的内置Web服务器 818

第6部分 高级PL/SQL主题 821

第23章 应用系统安全与PL/SQL 821

23.1安全概述 821

23.2加密 822

23.2.1密钥长度 823

23.2.2算法 824

23.2.3填补和连接 825

23.2.4 DBMS CRYPTO包 825

23.2.5数据加密 827

23.2.6 LOB的加密 830

23.2.7安全文件 830

23.2.8数据解密 831

23.2.9生成密钥 832

23.2.10密钥的管理 833

23.2.11加密哈希 838

23.2.12使用消息验证码 839

23.2.13使用透明数据加密(TDE) 841

23.2.14透明的表空间加密 843

23.3行级安全 844

23.3.1为什么要学习RLS 846

23.3.2一个简单的RLS示例 847

23.3.3静态与动态策略 850

23.3.4使用列敏感的RLS 854

23.3.5 RLS调试 857

23.4应用程序上下文 861

23.4.1使用应用程序上下文 862

23.4.2上下文的安全 863

23.4.3把上下文用作RLS的谓词条件 863

23.4.4识别出非数据库的用户 867

23.5细粒度审计 868

23.5.1为什么要学习FGA 869

23.5.2一个简单的FGA示例 870

23.5.3访问多少列 872

23.5.4查看审计跟踪信息 873

23.5.5使用绑定变量 874

23.5.6使用句柄模块 875

第24章PL/SQL架构 877

24.1 DIANA 877

24.2 Oracle如何执行PL/SQL代码 878

24.2.1一个示例 879

24.2.2编译器的限制 881

24.3 PL/SQL的缺省包 882

24.4执行权限模型 884

24.4.1定义者权限模型 885

24.4.2调用者权限模型 889

24.4.3组合权限模型 891

24.4.4给PL/SQL程序单元授予角色 (Oracle数据库12c) 892

24.4.5“谁调用了我?”函数 (Oracle数据库12c) 895

24.4.6视图的BEQUEATH CURRENT USER子句(Oracle数据库12c) 895

24.4.7调用者权限优点的限制 (Oracle数据库12c) 897

24.5条件编译 898

24.5.1条件编译的示例 899

24.5.2查询指令 900

24.5.3 $IF指令 903

24.5.4 $ERROR指令 904

24.5.5将代码与包常量同步 905

24.5.6用查询指令实现程序专有设置 906

24.5.7使用预处理后的代码 907

24.6 PL/SQL和数据库实例内存 908

24.6.1 SGA、 PGA和UGA 908

24.6.2游标、内存及其他 909

24.6.3减少内存使用的技巧 910

24.6.4内存用光了怎么办 920

24.7原生式编译 922

24.7.1什么时候使用解释模式 922

24.7.2什么时候使用原生模式 922

24.7.3原生编译和数据库版本 923

24.8一些须知 923

第25章PL/SQL的全球化和本地化 925

25.1概述和术语 926

25.2 Unicode入门 928

25.2.1国家字符集的数据类型 929

25.2.2字符编码 929

25.2.3和全球化支持相关的参数 930

25.2.4 Unicode函数 931

25.3字符语义 938

25.4字符串排序顺序 941

25.4.1二进制排序 942

25.4.2单语言排序 943

25.4.3多语言排序 945

25.5多语言信息检索 946

25.5.1信息检索和PL/SQL 948

25.6日期/时间 950

25.6.1时间戳数据类型 951

25.6.2日期/时间格式 952

25.7货币转换 955

25.8 PL/SQL的全球化开发工具箱 957

25.8.1 UTL_ I18N工具包 957

25.8.2 UTL_LMS异常处理包 960

25.8.3 GDK实现选项 961

第26章PL/SQL的面向对象特性 963

26.1 Oracle对象特性的介绍 963

26.2对象类型示例 965

26.2.1创建一个基类 966

26.2.2创建子类型 967

26.2.3方法 968

26.2.4在Oracle数据库11g及以后版本中调用父类的方法 972

26.2.5保存、提取、使用持久化对象 974

26.2.6演变和创建 981

26.2.7回到指针吗? 983

26.2.8泛化数据:ANY类型 989

26.2.9我们自己做 993

26.2.10对象的比较 996

26.3对象视图 1001

26.3.1一个关系型系统的示例 1002

26.3.2带有集合属性的对象视图 1003

26.3.3对象子视图 1006

26.3.4带有反关系的对象视图 1008

26.3.5 INSTEAD OF触发器 1008

26.3.6对象视图和对象表的区别 1010

26.4维护对象类型和对象视图 1012

26.4.1数据字典 1012

26.4.2权限 1013

26.5来自一个关系开发者的总结思考(C551, E1200) 1015

第27章 从PL/SQL中调用Java 1017

27.1 Oracle和Java 1017

27.2准备好在Oracle中使用Java 1018

27.2.1安装Java 1019

27.2.2创建和编译我们的Java代码 1019

27.2.3设置Java开发和执行的权限 1020

27.3一个简单的演示 1022

27.3.1查找Java功能 1023

27.3.2创建一个自定义Java类 1023

27.3.3编译和加载到Oracle 1025

27.3.4创建一个PL/SQL的包装器 1026

27.3.5从PL/SQL删除文件 1027

27.4使用loadjava 1028

27.5使用dropj ava 1030

27.6管理数据库中的Java 1030

27.6.1 Oracle中的Java命名空间 1030

27.6.2检查加载的Java元素 1031

27.7使用DBMS_JAVA 1032

27.7.1 LONGNAME:转换Java长名字 1032

27.7.2 GET、 SET_和RESET COMPILER OPTION:得到和设置(一些)编译器选项 1033

27.7.3 SET OUTPUT:允许从Java中输出 1034

27.7.4 EXPORT SOURCE、 EXPORT_RESOURCE和EXPORT_CLASS:导出模式对象 1034

27.8在PL/SQL中发布与使用Java 1036

27.8.1调用规范 1036

27.8.2一些调用规范的规则 1037

27.8.3映射数据类型 1038

27.8.4在SQL中调用Java方法 1039

27.8.5 Java的异常处理 1040

27.8.6扩展文件I/O功能 1042

27.8.7其他示例 1046

第28章 外部过程 1049

28.1外部过程介绍 1050

28.1.1示例:调用一个系统命令 1050

28.1.2外部过程的架构 1052

28.2 Oracle网络配置 1053

28.2.1定义监听配置 1053

28.2.2配置的安全特性 1055

28.3设置多线程模式 1056

28.4创建一个Oracle库 1058

28.5编写调用规范 1059

28.5.1调用规范:整体语法 1060

28.5.2参数映射:示例重温 1061

28.5.3参数映射:完整的内容 1063

28.5.4更多的语法:参数子句 1064

28.5.5参数属性 1065

28.6从调用的C程序中引发一个异常 1068

28.7非默认的代理 1071

28.8维护外部过程 1073

28.8.1删除库 1073

28.8.2数据字典 1074

28.8.3规则和警示 1074

附录A正则表达式元字符和函数参数 1075

附录B数字格式模型 1080

附录C日期格式模型 1083