令人兴奋的FORALL和BULK COLLECT功能
在我所撰写的关于Oracle数据库10g中PL/SQL增加功能的第二篇文章中,我将探讨使用带有非连续驱动索引的FORALL语句这一新功能。[@more@]在我所撰写的关于Oracle数据库10g中PL/SQL增加功能的第二篇文章中,我将探讨使用带有非连续驱动索引的FORALL语句这一新功能。这初听起来也许相当深奥,但实际上它是对FORALL语句的一个关键性改进,它可大大简化代码,并且对于那些要在PL/SQL程序中更新很多行数据的程序来说,它可显著提高其性能。我将首先回顾FORALL的功能,然后分析Oracle数据库10g对非连续驱动索引提供支持所产生的影响。用FORALL来增强
基于Oracle的高性能动态SQL程序开发
摘要:对动态SQL的程序开发进行了总结,并结合笔者实际开发经验给出若干开发技巧。[@more@]关键词:动态SQL,PL/SQL,高性能 1. 静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型;另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输入时,那么Oracle的SQL引擎就无法在编译期对该程序语句进行确定,只能在用户输入一定的查询条件后才能提交给SQL引擎进行处理。通常,静态SQ
Oracle 分析函数详解
Oracle 分析函数使用介绍分析函数是oracle816引入的一个全新的概念,为我们分析数据提供了一种简单高效的处理方式.在分析函数出现以前,我们必须使用自联查询,子查询或者内联视图,甚至复杂的存储过程实现的语句,现在只要一条简单的sql语句就可以实现了,而且在执行效率方面也有相当大的提高.下面我将针对分析函数做一些具体的说明.今天我主要给大家介绍一下以下几个函数的使用方法[@more@]1、自动汇总函数rollup,cube,2、rank 函数, rank,dense_rank,row_number3、lag,lead函数4、sum,avg,的移动增加,移动平均数5、ratio_to_report报表处理函
Oracle With 语法 示例
以下相当于一句独立的sql,可以在sql window 中独立运行:With ab As (Select * From scott.dept),ba As (Select * From scott.emp)Select ab.*,ba.*From ab,baWhere ab.deptno = ba.deptno[@more@]另外,游标示例如下:BeginFor iLoop In (With ab As (Select * From scott.dept),ba As (Select * From scott.emp)Select ab.*From ab,baWhere ab.deptno = ba.deptno) Loopdbms_output.put_line('>' || iLoop.Deptno || iLoop.Dname);End Loop;End;DeclareCursor cur_main IsWith ab As (Select * From scott.dept),ba As (Select * Fr
采用Oracle的dbms_obfuscation_toolkit的加密和解密详解
Oracle9i Supplied PL/SQL Packages and Types Reference. 加密(encrypt)解密(decrypt)是采用 Oracle DBMS_OBFUSCATION_TOOLKIT package.[@more@]利用这个包,我们可以对数据进行DES,Triple DES或者MD5加密.DESGETKEY -- 产生密钥,用于DES算法 DES3GETKEY -- 产生密钥,用于Triple DES算法 DESENCRYPT -- 用DES算法加密数据DESDECRYPT -- 用DES算法解密数据DES3ENCRYPT -- 用Triple DES算法加密数据DES3DECRYPT -- 用DES算法解密数据MD5 -- 用MD5算法加密数据Triple DES (3DES) is a far stronger cipher than DES; the resulting ciphertex
ORACLE中用一条SQL实现其它进制到十进制的转换
-----二进制转换十进制-----------------select sum(data1)from (select substr('1101', rownum, 1) * power(2, length('1101') - rownum) data1from dualconnect by rownum <= length('1101'))[@more@]-----八进制转换十进制-----------------select sum(data1)from (select substr('1101', rownum, 1) * power(8, length('1101') - rownum) data1from dualconnect by rownum <= length('1101'))----十六进制转换十进制-----------------select sum(data1)from (select (CASE upper(substr('2D', rownum, 1)) WHEN 'A' THEN '1
Oracle里时间的应用
1、转换函数与date操作关系最大的就是两个转换函数:to_date(),to_char()to_date() 作用将字符类型按一定格式转化为日期类型:具体用法:to_date('2004-11-27','yyyy-mm-dd'),前者为字符串,后者为转换日期格式,注意,前后两者要以一对应。 [@more@]如;to_date('2004-11-27 13:34:43', 'yyyy-mm-dd hh24:mi:ss') 将得到具体的时间多种日期格式:YYYY:四位表示的年份 YYY,YY,Y:年份的最后三位、两位或一位,缺省为当前世纪 MM:01~12的月份编号 MONTH:九个字符表示的月份,右边用空格填补 MON:三位字符的月份缩写 WW:一年中的星期 D
Oracle 动态游标的使用
create or replace procedure proc_XXX(p_iBillMonth in number,p_tab in number, p_nStatus out number,[@more@]一、create or replace procedure proc_XXX(p_iBillMonth in number,p_tab in number, p_nStatus out number,p_szErrorMsg out varchar2) istype t_cur is ref cursor;v_ser t_cur; TYPE detail_param IS RECORD (acc_code number(7),fee number(9),time number(1),cout number(7),unit number(12));TYPE detail_param_list IS TABLE OF detail_param INDEX BY BINARY_INTEGER;v_noowner_detail_param_list detail_param_lis