动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.详细讲解Oracle I/O子系统的配置.
.export/import技巧.
.Oracle库的Hang.
.Oracle8i 中生成创建对象的 SQL.
.Oracle XMLDB 占用了8080端口.
.Oracle常見問題集(二).
.Oracle listener静态注册和动态注.
.Oracle 9i配置【管理服务器】.
.Oracle用户密码含有特殊字符应当.
.经典Java开发工具介绍(1):Ora.
.Developer/2000 R2.1 中文版 在 .
.Oracle电子商务套件11i10首次亮相.
.使用Rman进行不完全恢复.
.oracle数据库java接口类.
.如何成为一名出色的Oracle数据库.
.Oracle 数据库中的 Empty String.
.Oracle数据库定时Jobs作业的使用.
.ActualTest Oracle 1Z0-032 v12..
.如何使用改变跟踪技术加速Oracle.
.PL/SQL用光标查询多条记录.

讲解基于Oracle高性能动态SQL程序开发

发表日期:2008-2-9 |


本文讲解基于Oracle高性能动态SQL程序开发。 1.静态SQLSQL与动态SQL: Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型;另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输入时,那么Oracle的SQL引擎就无法在编译期对该程序语句进行确定,只能在用户输入一定的查询条件后才能提交给SQL引擎进行处理。通常,静态SQL采用前一种编译方式,而动态SQL采用后一种编译方式。 本文主要就动态SQL的开发进行讨论,并在最后给出一些实际开发的技巧。 2. 动态SQL程序开发: 理解了动态SQL编译的原理,也就把握了其基本的开发思想。动态SQL既然是一种”不确定”的SQL,那其执行就有其相应的特点。Oracle中提供了Execute immediate语句来执行动态SQL,语法如下: Excute immediate 动态SQL语句 using 绑定参数列表 returning into 输出参数列表; 对这一语句作如下说明: 1) 动态SQL是指DDL和不确定的DML(即带参数的DML)。 2) 绑定参数列表为输入参数列表,即其类型为in类型,在运行时刻与动态SQL语句中的参数(实际上占位符,可以理解为函数里面的形式参数)进行绑定。 3) 输出参数列表为动态SQL语句执行后返回的参数列表。 4) 由于动态SQL是在运行时刻进行确定的,所以相对于静态而言,其更多的会损失一些系统性能来换取其灵活性。 为了更好的说明其开发的过程,下面列举一个实例: 设数据库的emp表,其数据为如下:
ID NAME SALARY 100 Jacky 5600 101 Rose 3000 102 John 4500
要求: 1.创建该表并输入相应的数据。 2.根据特定ID可以查询到其姓名和薪水的信息。 3.根据大于特定的薪水的查询相应的员工信息。 根据前面的要求,可以分别创建三个过程(均使用动态SQL)来实现: 过程一:
create or replace procedure create_table asbeginexecute immediate 'create table emp (id number,name varchar2(10)salary number; )'; --动态SQL为DDL语句 insert into empvalues (100,'jacky',5600); insert into empvalues (101,'rose',3000); insert into empvalues (102,'john',4500);end create_table;
过程二:
create or replace procedure find_info(p_id number) asv_name varchar2(10);v_salary number;beginexecute immediate 'select name,salary from empwhere id=:1' using p_idreturning into v_name,v_salary; --动态SQL为查询语句dbms_output.put_line (v_name '的收入为:'to_char(v_salary)); exceptionwhen others thendbms_output.put_line('找不到相应数据'); end find_info;
过程三:
create or replace procedure find_emp(p_salary number) asr_emp emp%rowtype;type c_type is ref cursor;c1 c_type; beginopen c1 for 'select * from empwhere salary >:1' using p_salary;loopfetch c1 into r_emp;exit when c1%notfound;dbms_output.put_line ('薪水大于‘to_char(p_salary)’的员工为:‘); dbms_output.put_line('ID为'to_char(r_emp)' 其姓名为:'r_emp.name);end loop;close c1;end create_table;
注重:在过程二中的动态SQL语句使用了占位符“:1“,其实它相当于函数的形式参数,使用”:“作为前缀,然后使用using语句将p_id在运行时刻将:1给替换掉,这里p_id相当于函数里的实参。另外过程三中打开的游标为动态游标,它也属于动态SQL的范畴,其整个编译和开发的过程与 execute immediate执行的过程很类似,这里就不在赘述了。

上一篇:如何恢复只有完好数据文件的Oracle数据 人气:632
下一篇:怎样保持Oracle数据优良性能的若干诀窍 人气:409
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-6 Movie34电影搜索引擎 v3.0
2008-9-6 wap2.0仿帝国建站喜用 v2.0
2008-9-6 免费人才招聘网 宽屏版 v3.01
2008-9-6 喜喔喔视频采集程序 v1.0 beta
2008-9-6 ASP客户管理系统
2008-9-6 主流驿站中秋祝福程序
2008-9-6 php实现msn协议的类
2008-9-5 Coppermine Photo Gallery v1.4.
2008-9-5 清松网络日记本 v2.4
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号