平时在PL/SQL中的编程中遇到一些问题,这里以问答的形式来进行把它们总结下来,以供大家分享。
1、当需要向表中装载大量的数据流或者需要处理大量的数据流的时候,能否使用管道提高处理效率?
管道函数对于改善并行查询的性能非常方便,它加快往表中加载数据的速度。管道函数的使用总结如下两点:
每当在查询里使用PL/SQL函数时,该查询将被序列化,即一个处理器只能运行一个查询实例,那么在这种情况下不可能使用并行查询(比如在数据仓库中要经常使用这项技术)。因此,为了使用并行查询就必须使用管道函数,这样也就加快了执行的速度。
管道函数的输入参数必须是一个引用记录集类型(即ref cursor),而返回的是嵌套表类型(其表中每一行对应每一个引用记录)。在使用管道函数之前,必须先在程序头写上PARALLEL_ENABLE,这样才能在查询语句中使用管道函数来处理了。
2. 如何使PL/SQL程序等待一段时间执行?
方法就是使用DBMS_LOCK包的SLEEP函数,可以进行精确定时,其语法为:
DBMS_LOCK.SLEEP (seconds IN NUMBER);
3.需要在一张表插入一条记录之后等若干秒后再执行另外一个操作,如何在PL/SQL程序里进行定时操作?
一般的做法是用循环作延迟,利用 DBMS_UTILITY的gettime函数来检测当前的时间,程序代码如下:
DECLARE
v_delaytime CONSTANT INTEGER := 100;
v_starttime INTEGER ;
v_endtime INTEGER ;
BEGIN
V_starttime := DBMS_UTILITY.get_time;
V_endtime := DBMS_UTILITY.get_time;
While abs(V_endtime- V_starttime)< v_delaytime loop
/*空循环或者简单的耗时执行语句*/
End loop;
END;
/
另外如果是不同会话(session)之间的定时,就必须使用DBMS_PIPE包的函数来实现会话间的消息传递。
4.当PL/SQL返回一个数据集的时候,该使用集合还是游标?
一般情况下,有以下两点作为依据:
1) 如果PL/SQL程序返回多多行数据给另外一个PL/SQL程序的话,这里就建议使用集合,因为这样可以利用集合的批收集(bulk collection)来提高从数据库提取数据的速度。
2) 如果需要在PL/SQL程序的环境中把数据返回到宿主语言环境中(如Sql*plus,c,delphi等),这时应该使用游标变量来返回这些数据,因为几乎所有的宿主语言都支持游标变量,但不是所有的宿主语言都支持集合。这样可以增强程序的可移植性。
5.如何更有效的在PL/SQL中使用游标?
游标是PL/SQL中一个非常重要的概念,对数据库的检索主要依靠游标来操作。在PL/SQL中有两类游标,一类是隐式游标,如select clno into v_clno from table_detail.另外一类是显式游标,如cursor v_cur is select clno from table_detail。对于游标的使用这里给出以下几点建议:
1) 尽可能的使用bulk collection。它能够较大的提高运行性能,在Oracl9i的第二版,甚至可以使用bulk collection来直接将数据写入到记录表
2) 尽量使用显式游标来处理,因为相对于隐式游标来说,显式游标的速度更快一些。
3) 如果查询的表很小或者是静态的,可以把该表缓存到一个包级的集合里。这样,你的查询函数就直接从集合里(即进程全局区,PGA cache),而不是从系统全局区(SGA)来取数据,这样的处理速度会提升很多。
分享到:
相关推荐
12. **调试和错误诊断**:最后,手册会介绍如何使用Oracle提供的调试工具和技巧来追踪和解决PL/SQL程序中的问题。 这份"PL/SQL最新中文手册"对于任何想要深入理解并有效利用PL/SQL进行Oracle数据库开发的人来说,都...
这本书的源代码提供了丰富的示例和练习,帮助读者理解和掌握PL/SQL编程技巧。 PL/SQL是Oracle数据库的内置编程语言,它是SQL的扩展,允许开发者编写复杂的事务处理逻辑、创建自定义函数和存储过程,以及实现数据库...
Oracle PL/SQL是一种...书中可能包含各种类型的PL/SQL程序设计技巧,从简单的存储过程和函数到复杂的事务处理和并发控制策略。通过实例学习,你将能够更好地理解和运用这些概念,提升你在Oracle数据库开发中的技能。
Oracle PL/SQL编程是Oracle数据库管理系统中的重要组成部分,它是一种过程化语言,允许开发者编写复杂的数据库应用程序。在本次实验中,我们将重点学习PL/SQL的基本语法、控制结构、复合数据类型以及异常处理技术。 ...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...
本书《精通Oracle10g PL/SQL编程》为读者提供了一个系统性的学习路径,从基础知识到高级应用,从具体技巧到最佳实践,涵盖了PL/SQL编程的方方面面。通过本书的学习,读者将能够有效地提高Oracle数据库编程的效率和...
通过学习《精通Oracle.10g.Pl.SQL编程》,读者可以掌握编写高效、可靠的PL/SQL代码的技巧,提升数据库管理和应用开发的能力。书中可能还会包含大量的练习题和案例,以巩固学习效果并培养实际操作能力。Oracle 10g...
《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...
《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...
循环语句是PL/SQL编程中用来重复执行一组语句的结构,包括loop、while、for三种形式,它们各自有不同的使用场景和语法。 分支条件语句在PL/SQL中用来根据不同的条件执行不同的代码分支,主要包括CASE表达式和if-...
《Oracle Database 10g PL/SQL编程》一书由Scott Urman、Ron Hardman和Michael McLaughlin共同编写,由McGraw-Hill/Osborne出版,是Oracle数据库编程领域的一部经典之作。该书深入浅出地介绍了Oracle Database 10g...
#### 一、PL/SQL编程基础 - **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL查询的基础上添加控制流语句、变量定义、错误处理等特性...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...
PL/SQL本身涉及的知识点浩瀚、庞杂...当然,最为重要的还是内容本身,本书首先对PL/SQL的理论基础进行了全面的介绍,其次详细讲解PL/SQL开发的所有功能模块、方法和技巧,最后对它的各种高级特性也进行了深入探讨。
### Oracle PL/SQL 编程知识点详解 #### 一、SQL PLUS 命令与用法 ##### 1. 引言与 SQL 命令 SQL PLUS 是一个功能强大的命令行工具,用于与 Oracle 数据库进行交互。SQL PLUS 支持一系列标准 SQL 命令,这些命令...
这本书深入浅出地介绍了Oracle数据库中最重要的编程语言——PL/SQL,帮助读者掌握在Oracle 10g环境中进行高效、安全的数据库编程技巧。 PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库...
**PL/SQL编程:超全经典官方多本书籍资料** PL/SQL,全称为Procedural Language/Structured Query Language,是Oracle数据库系统中用于数据库编程的一种语言,它结合了SQL的查询能力与过程式编程语言的特点,使得...
Oracle中的PL/SQL是一种强大的编程语言,它是Oracle数据库与应用程序之间的桥梁,专为数据库操作而设计。PL代表“过程化语言”(Procedural Language),SQL则是“结构化查询语言”(Structured Query Language)。...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据库操作能力和PL/SQL的结构化编程特性,使得数据库开发者能够创建复杂的应用程序和数据库逻辑。在"Oracle PL/SQL实例精解 数据库建立代码"中,我们将深入探讨...
-PL/SQL代码优化技巧:避免不必要的计算,减少磁盘I/O,提高程序效率。 8. **PL/SQL与Oracle特性结合**: - 权限和角色:理解PL/SQL中的权限管理,包括GRANT和REVOKE。 - 视图(VIEW):在PL/SQL中使用视图进行...