当前位置:首页 > 日记 > 正文

基于oracle的高性能动态sql程序开发

基于oracle的高性能动态sql程序开发
oracle课程主要研究基于oracle的高性能动态sql程序的开发。
文摘:总结了动态sql程序的开发,结合作者的实际开发经验,给出了一些开发技术。

关键词:动态SQL,sql,sql,高性能

1。静态和动态SQL sqlsql

Oracle的PL / SQL编译器块分为两种类型:一为预链接(早期绑定),在编译程序中的SQL语句已经确定,编译大多数属于这一类型;另一种是后期绑定(后期绑定),只有在运行阶段的SQL语句可以建立,例如当用户输入查询条件,然后Oracle的SQL引擎不会在编译的程序语句的时间是确定的,只有在一定的条件下,处理后提交给SQL引擎对用户输入的查询。通常,静态SQL使用以前的编译模式,而动态SQL使用后者的编写模式。

本文主要讨论动态SQL的开发,并给出了一些实用的开发技术。

2。动态sql程序开发

掌握了动态sql编译的基本原理,掌握了动态sql的基本思想,由于动态sql是一种不确定的SQL,它的实现有其自身的特点,在oracle中提供了执行即时语句来执行动态sql,其语法如下:

立即执行动态SQL语句使用绑定参数列表返回到输出参数表;

这句话的解释如下:

1)动态SQL是指DDL和DML的不确定性(即DML与参数)

2)绑定参数列表是输入参数列表,也就是说,它的类型是类型,它与动态SQL语句中的参数(实际占位符,在函数中可以理解为函数的形式参数)绑定。

3)输出参数列表是执行动态SQL语句后返回的参数列表。

4)由于动态SQL是在运行时确定的,它将失去一些系统性能以换取其灵活性。

为了更好地说明它的发展过程,下面列出了一个例子。

设置数据库的EMP表,以下数据如下:
请求:

1。创建表并输入相应的数据。

2。他们的姓名和薪水的信息可以根据特定的ID查询。

三.对应于大于特定工资的查询的相应员工信息。

根据前面的需求,您可以创建三个进程,分别使用动态SQL:

过程1:
过程中的两个:
过程三:
注意:流程2中的动态SQL语句使用占位符:1,它相当于函数的形参。它是用来作为前缀,然后使用using语句来代替p_id在运行时:1,在这里p_id相当于函数的实际参数。此外,光标第三开辟过程是动态游标。它也属于动态sql的范畴。整个编译和开发过程非常类似于直接执行的执行过程。

{分页}
三.动态sql语句的开发技术

To the above analysis, the implementation of dynamic SQL based on the loss of system performance for its flexibility, so optimized to some extent it is necessary, according to the actual development experience gives some development skills, it is necessary to point out that there are a lot of experience is not limited to the dynamic SQL, some also apply to static SQL will be given in the description of annotation.

技巧1:尝试使用类似的SQL语句,这样Oracle本身就可以通过SGA中的共享池直接缓存SQL语句。然后,在下一次执行类似语句后,我们将直接调用缓存中的解析语句,从而提高执行效率。

技巧二:当涉及到集合单位时,尽量尽可能使用批量编辑器。例如,一般要求100和101的雇员增加10%的工资。
对于上述处理,当大量数据会比较慢的时候,所以如果链接的数量,整组第一次一次性传递给SQL引擎,这个处理效率要远远高于分离,批处理代码作为链接:
这里是批量编辑所有的使用,使得该批处理的情况总结。

1)如果一个循环执行插入、删除、更新、和其他陈述是指集合元素,那么它可以被移动到一个FORALL语句。

2)如果选择进入、进入或返回子句,指一个集合,则应使用批量收集子句进行合并。

3)如果可能的话,应该使用主机数组来实现程序和数据库服务器之间的参数。

技巧三:使用nocopy编译器提高PL / sql.by默认性能的型,在型的价值转移的方式进行参数。但对于对象或类型的传输类型的参数设置,希望损失会很大,为了减少损失,可以用来参考的方式,即在参数声明的关键字参考nocopy规格可以达到同样的效果。例如,创建一个进程:
正方形是一个大对象类型,这是唯一的传递地址的方法,而不是整个对象。显然,这种处理也提高了效率。

4。总结

本文讨论了动态sql的编译原理、开发过程和开发技巧。本文在介绍了这篇文章之后,相信读者对动态sql程序的发展有了一个大致的了解,为以后的进一步工作打下了良好的基础。

前面的代码部分已在以下环境中成功调试:

服务器端:UNIX + oracle9.2

客户:Windows2000 Pro +蟾蜍

上一页

相关文章

如何连接索引和索引的选择使用

如何连接索引和索引的选择使用

索引,连接,选择,电脑软件,现在,我们知道优化器如何回应这些技术和清楚的说明了位图索引和B树索引的最佳应用。 在性别列的位图索引,另一个位图索引在SAL列创建,和一些查询的执行。对这些列,将重新执行查询与B-树索引。 从test_normal表,查询了以…

从Oracle表行讨论第1页2

从Oracle表行讨论第1页2

电脑软件,Oracle,不 钱 天 一 二十三 一 一 四十三 二 一 - 45 三 二 四十二 一 二 - 10 二 二 五十 三 三 一百 八 为了满足阅读习惯,最后的语句预期采用以下格式: 不 周一 星期二 苏氨酸 一 二十三 四十三 - 45 二 四十二 - 10…

ehtray.exe过程的作用是什么。可以

ehtray.exe过程的作用是什么。可以

作用,过程,信息查询,电脑软件,ehtray,点评:ehtray.exe是微软微软媒体中心系统托盘相关程序快速访问数字设备管理 进程文件:ehtray或ehtray.exe 过程名称:微软媒体中心托盘图标 过程类别:安全风险的过程 英文描述: ehtray.exe是一个过程的,过程…

如何隐藏桌面Win8如何把桌面图标在

如何隐藏桌面Win8如何把桌面图标在

桌面图标,桌面,右下角,电脑软件,评论:有时候我们喜欢在桌面上谈论一些常用的文档,然后让桌面满了,那么我们怎样才能尽快隐藏桌面并找到桌面上的按钮呢 1,选择右键中的视图,单击桌面,桌面图标将显示弹出菜单的钩子。 2,我们在桌面上什么也看不见。…

一种完整的mysql下导入导出实现方

一种完整的mysql下导入导出实现方

方法,导入导出,完整,电脑软件,mysql,昨天中午,我帮鲤鱼把数据库服务器转到了一个团购网站。这篇文章本来应该在昨天的调动后寄出,但是由于某些原因我没有及时把它写出来。现在我马上把它装满。 首先,环境是这样的,旧的数据库服务器MySQL 5版本…

如何查看数据库警报日志文件

如何查看数据库警报日志文件

日志文件,数据库,警报,电脑软件,1。查看操作系统版本 从$ $版本中选择*; 旗帜 ---------------------------------------------------------------- Oracle数据库10g企业版发布10.2.0.1.0 -产品 PL / SQL版本10.2.0.1.0生产 核心10.2.0.1.0…

10MySQL中SELECT语句的简单用法

10MySQL中SELECT语句的简单用法

语句,简单,电脑软件,MySQL,SELECT,1、SELECT语句可由回车符分隔 在id = 1中的select * 和 从文章 其中id = 1 2。批量查询数据 可以用 为SQL =SELECT * FROM文章ID(1,3,5) 三.使用concat连接查询的结果 为SQL = 选择concat(ID, 回到1-articl…

从微软帐户切换到本地账户Win8.1方

从微软帐户切换到本地账户Win8.1方

账户,方法,帐户,切换到,电脑软件,点评:很多新手朋友不知道Win8.1可以从微软帐户切换到本地帐户。这是个好办法。有兴趣的朋友可以参考一下。 1。通过键盘快捷键组合Windows + C键,退出超级按钮列,点击设置; 图1转移Win8.1超级按钮栏 2。查找右…

让Win7下载网络休眠模式下的方式

让Win7下载网络休眠模式下的方式

网络,下载,休眠,方式,模式下,点评:在休眠模式win7的系统,它会自动断网操作,那么如何保持网络休眠模式下这是一个帮助你的好方法。 Win7下载在睡眠模式。当你使用Win7操作系统的童鞋们,我相信你会知道,win7系统会自动断网在睡眠模式。然而,大多数…

oracle数据库管理脚本命名规范

oracle数据库管理脚本命名规范

数据库管理,命名规范,脚本,电脑软件,oracle,您所看到的Oracle教程是Oracle数据库管理脚本命名规范,Oracle中的数据字典是数据库的重要组成部分。它提供相关数据库的信息。这是所有Oracle用户的一个非常重要的信息来源(从应用,最终用户应用程序…

wltray.exe的过程是怎样的

wltray.exe的过程是怎样的

的是,过程,是怎样,电脑软件,wltray,评论:对wltray.exe工艺简介 进程文件:wltray或wltray.exe 过程名称:戴尔无线网卡无线网络托盘小程序 过程类别:安全风险的过程 英文描述: wltray.exe是一个过程的旁边安装了戴尔无线网卡,提供这些设备的额外…

用MySQL获取成组记录总数的方法

用MySQL获取成组记录总数的方法

方法,总数,电脑软件,MySQL,本文介绍了用MySQL获取记录组总数的方法,供大家参考,具体方法如下: 一般来说,通过对组的MySQL访问可以获得字段中记录的总记录数,并且组的记录数不能计算。 在MySQL数据库中,你可以使用sql_calc_found_rows得到查询的…