Oracle开发
文章平均质量分 73
编程小强
勿以善小而不为,勿以恶小而为之。
展开
-
Authid current_user的用法
转载自:http://blog.csdn.net/inthirties/article/details/4673262Authid Current_User:以执行过程的用户的权限来处理涉及的对象权限. 这是典型的,数据库中只创建一个存储过程,所有用户都可以使用,但是每个用户使用的时候 只是用自己的权限权限执行,oracle自己的包很多都这样的。 存储过程默认是用定转载 2014-06-13 20:10:21 · 2578 阅读 · 0 评论 -
Oracle to_char格式化函数
转载自:http://www.cnblogs.com/reborter/archive/2008/11/28/1343195.htmlPostgres 格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。注意:所有格式化函数的第二个参数是用于转换的模板。表 5-7.转载 2014-06-14 14:40:55 · 578 阅读 · 0 评论 -
使用forall语句的bulk dml操作
在oracle 8i或更高版本的forall语句中,oracle提供了非常有意义的dml增强特性。Forall告诉PL/SQL运行期引擎批量绑定一个或多个集合的所有元素到sql语句中,这个动作是在发送信息到sql引擎之前发生。 为什么批量dml 是非常有用的呢?因为在oracle数据库中,plsql与sql引擎是紧密联系的,尽管我们可以在oracle数据库中使用java 语言,但是转载 2014-06-14 14:44:58 · 1085 阅读 · 0 评论 -
plsql优化笛卡尔积
转载自:http://www.itpub.net/thread-1840767-1-1.html写在最前,是对我自己而言收获最大的想法。oracle的优化,了解CBO很重要,分析执行计划很重要;但是,优化绝不止于CBO,相比之下优化必谈CBO,我觉得多少有点误区。我们究竟是否明白一个sql或者一段plsql执行过程中哪步最费时?为什么?--*****************转载 2014-06-14 14:47:40 · 2780 阅读 · 0 评论 -
关于oracle中varchar2的最大长度
关于 varchar2 的最大长度varchar2有两个最大长度:一个是在字段类型4000;一个是在PL/SQL中变量类型32767。今天犯了一个小错误,就是函数的varchar2类型的返回值长度也是4000,而不是我以为的32767。 想了一下,这是一个比较容易出错的地方。因为在函数中我可以声明长度超过4000的字符串变量,并且将它作为返回值,这里是不会提示编译错误的。这个函数平时都转载 2014-06-14 14:49:55 · 705 阅读 · 0 评论 -
使用Partitioned Outer Join实现稠化报表
转载自:http://www.itpub.net/thread-1332059-1-1.html背景介绍:在数据库表中,存储的数据经常是稀疏数据(sparse data),而不是稠密数据(dense data)。先来了解一下什么是稀疏数据,比如一个产品销售情况表(比如有产品名、销售时间(精确到年月)、销售量3个列),假设某个时间某些产品它没有销售,一般也不会将这些产品的销售量存储为0,转载 2014-06-14 14:54:48 · 547 阅读 · 0 评论 -
WM_CONCAT字符超过4000的处理办法
参考网址:http://stackoverflow.com/questions/11541383/ordering-by-list-of-strings-in-oracle-sql-without-listagg字符串拼接技巧和方式:http://www.oracle-base.com/articles/misc/string-aggregation-techniques.php转载 2014-06-14 14:59:38 · 19326 阅读 · 0 评论 -
oracle中varchar2字段转clob字段,并提供读取方法。
转载自:http://my.oschina.net/guyfar/blog/73837问题描述CMS系统中有一个表的字段(如:content)是varchar2类型(最多只能存储4000字符),不够用了,因此将其改为clob类型(支持4G存储量)。如果该字段content列不为空的话,不能直接通过sql语句修改其字段类型,会报ORA-22858的错误,如图所示:转载 2014-06-14 15:01:36 · 25797 阅读 · 0 评论 -
浅谈oracle中的context(上下文)
转载自:http://blog.itpub.net/25701553/viewspace-702957context这个词见得还是挺多的,尤其是在计算机领域。大部人将它翻译为上下文,我也就跟随大众吧。比如操作系统中的上下文切换等等。那么上下文到底意味着什么呢?在我看来就是当前程序运行的一个环境信息。举个例子说吧,当一个用户登录oracle之后就会有一个session,这个session中包含了转载 2014-06-14 14:43:02 · 6760 阅读 · 0 评论 -
Oracle预定义的21个系统异常类型!
转载自:http://zhanglinye.itpub.net/165283/viewspace-926745/[@more@] zhanglinye zhanglinye 2 5 2007-07-16T09:01:00Z 2007-07-16T09:01:00Z 1 129 740 MC SYSTEM 6 1 868 11.8132 Clean Clean 5.25 磅 7.8 磅 0 2转载 2014-06-14 14:53:13 · 704 阅读 · 0 评论 -
Oracle 10g新特性——选择性编译
转载自:http://www.hellodba.com/reader.php?ID=149&lang=CNOracle10g中提供了一个十分方便开发人员的新特性——选择性编译。即可以通过条件,只编译PL/SQL中的部分代码。如果你对C++很熟悉,那你会对这个特性感觉非常亲切,因为它和C++中的条件宏十分相似。在9i的时候,开发人员将自己的调试信息加入到程序中,往往release之后都没有删转载 2014-06-14 14:57:36 · 629 阅读 · 0 评论 -
Oracle Partitioned Tables & Indexes(各种例子)
转载自:Version 11.1 GeneralPartition Related Data Dictionary Objectsindpart$indsubpart$partobj$tabpart$indpart_param$partlob$subpartcol$tabsu转载 2014-06-14 14:38:13 · 1400 阅读 · 0 评论 -
使用 RATIO_TO_REPORT() 计算百分比
转载自:http://www.java2s.com/Tutorial/Oracle/0320__Analytical-Functions/UsingtheRATIOTOREPORTFunction.htmRATIO_TO_REPORT() function computes the ratio of a value to the sum of a set of values.转载 2014-06-14 14:39:32 · 2035 阅读 · 0 评论 -
存储过程使用游标变量返回结果集(推荐)
转载自:存储过程使用游标变量返回结果集 1)登录SQLPLUS,用户为SCOTT,利用该用户提供的表EMP www.2cto.com [sql] C:\Users\Administrator>sqlplus scott/scott 2)编写一个FUNCTION,返回值为游标变量 [sql] CREATE转载 2014-06-14 14:42:17 · 1059 阅读 · 0 评论 -
Oracle的上下文开发--自己定义的Context开发
转载自:不知道有没有用过userevn和sys_context这两个方法。 userenv在我们查看当前用户的session的字符集的时候是经常用到的。 比如 select userenv('language') from dual; sys_context的用户和这个userenv类似,是一个保持了和session有关的session级别的上下文。 这个上下文转载 2014-06-14 14:43:48 · 1137 阅读 · 0 评论 -
关于Long和Varchar2数据的相互转换在Oracle
转载自:http://blog.itpub.net/30193/viewspace-364458前几天,公司有人因为一个特别的事情,要把Varchar2转换成long;这让我们费了不少脑精,Oracle的文档不建议我们用Long类型的数据,但这个家伙愣是用了,莫名其妙;知道上周这个问题才有了彻底解决; 我分享一个store-procedure 去阐述这个问题转载 2014-06-14 14:51:32 · 21859 阅读 · 0 评论 -
使用Oracle trunc 来指定精确的年月日时分秒
转载自:http://wanqiufeng.blog.51cto.com/409430/472103函数trunc是一个Oracle内置的函数,可以对date类型数据进行“度身裁剪”,来适应不同类型的数据需求。 在前篇《Oracle日期类型操作几个问题》中,我们已经了解到date类型的基本知识。date类型是一种包括年、月、日、时、分和秒的数据类型,可以表示相对精确的时间信转载 2014-06-14 14:56:08 · 2683 阅读 · 0 评论 -
oracle 表(table)上最后一次 DML时间、行(row)上最后DML时间
转载自:http://www.anbob.com/archives/734.html在这介绍两个oracle 10G开始提供的一个伪列ORA_ROWSCN,它又分为两种模式一种是基于block,这是默认的模式,还有一种是基于row上,这种模式只能在建里表时指定ROWDEPENDENCIES,不可以通过后期的alter table ,同时会给数据库带来性能负载每个Block在头部是记录了转载 2014-06-14 14:40:18 · 6384 阅读 · 0 评论 -
ORACLE 内置函数之 GREATEST 和 LEAST(求多列的最大值,最小值)
转载自:http://dlblog.iteye.com/blog/1274005Oracle比较一列的最大值或者最小值,我们会不假思索地用MAX和MIN函数,但是对于比较一行的最大值或最小值呢?是不是日常用的少,很多人都不知道有ORACLE也有内置函数实现这个功能:COALESCE / GREATEST /LEAST. 1. COALESCE 返回该表达式列表的第一个非空v转载 2014-06-13 20:30:47 · 7890 阅读 · 0 评论 -
connect by rownum及connect by level的内部执行原理及过程
来自兔子大神对于有N条记录的来说,如果没有递归条件,直接connect by level,先深度搜索,再广度,则每个节点作为根节点,然后自身和其他节点为子节点,然后下个子节点还包括自身和其他节点,然后同样迭代所以,总共记录数有N*2^0+N*2^1+......... 其中0,1....为level则记F(N,l)为 select id,level f转载 2014-06-13 20:30:12 · 10583 阅读 · 0 评论 -
按照不同输入值,执行不同分支条件的语句优化
转载自: 在ITPUB上遇到一个很有意思的问题(http://www.itpub.net/thread-1796130-1-1.html),对于表T,有object_id,按照where object_id =:oid查询,如果传入的oid是NULL,则查询全部(希望走全表扫描),相当于FROM t WHERE 1=1,如果object_id传入非NULL值(希望走索引扫描),则执行转载 2014-06-13 20:16:58 · 1999 阅读 · 0 评论 -
Oracle异常处理
--异常处理---------------------------------------------------------// --预定义异常 --NO_DATA_FOUND 没有数据满足查询要求 --ZERO_DIVIDE 算术错误,如试图用0去除一个数 --INVALID_NUMBER 在要求转载 2014-06-13 20:06:37 · 589 阅读 · 0 评论 -
PL/SQL编程要点
转载自:PL/SQL作为过程化语言的特性,是对面向集合操作的sql语言的有力补充,那么因为PL/SQL与sql有着千丝万缕的联系,可能让我们对PL/SQL产生一些误解,在工作中和论坛的问题中发现很多,咱们是否可以整理出一般的PL/SQL编程规则(只是一般的规则),让大家对PL/SQL编程相关注意点有清晰地了解,帮助我们更好地使用PL/SQL语言。列出如下主题:1. PL/转载 2014-06-13 20:07:40 · 626 阅读 · 0 评论 -
wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
转载zi构建测试表:Sql代码create table TABLE1 ( ID INTEGER, NAME VARCHAR2(10) ) create table TABLE2 ( ID INTEGER, ROLE VARCHAR2(10) ) insert into T转载 2014-06-13 20:08:43 · 1025 阅读 · 0 评论 -
ORACLE分析函数(1)
转载自:http://blog.csdn.net/yidian815/article/details/12709223 分析函数是ORACLE提供的用来进行数据统计的强有力工具,与我们常用的聚合函数具有一些相似性,但又完全不同。聚合函数,首先会将数据进行分组,然后对每一组数据进行运算,如求和sum,求平均AVG等,对于聚合函数,每一个分组返回一条数据结果行。分析函数,同样也会对数据进行求转载 2014-06-13 20:09:30 · 467 阅读 · 0 评论 -
ORACLE 几个常用的函数
转载自:http://hi.baidu.com/maincoolbo/item/8baea846943a4e13896d10b31:replace 函数第一个参数你的字符串,第二个参数你想替换的部分,第三个参数你要替换成什么select replace('lihan','a','b')-----------------------------lihbn(所影响的行数转载 2014-06-13 20:11:28 · 720 阅读 · 0 评论 -
解决like中无法匹配下划线的问题
转载自:如果想检索出字段中包含下划线“_”的内容,该如何书写SQL语句呢?之所以问这个问题,是因为在Oracle中下划线在like中有着特殊的含义,它表示匹配任意一个字符。因此在查询包含下划线内容的时候需要“特殊关照”一下。既然被问到了这个问题,简单记录一下两种规避的方法,供参考。1.创建实验表,并初始化三条数据sec@ora10g> create table t (x v转载 2014-06-13 20:13:16 · 2957 阅读 · 0 评论 -
oracle提供的分析函数 cube(),rollup(),grouping sets()-----关注grouping sets用法及原理
转载自:http://xls.iteye.com/blog/10967111. Oracle的rollup、cube、grouping sets函数 收藏Oracle的group by除了基本用法以外,还有3种扩展用法,分别是rollup、cube、grouping sets。1 rollup假设有一个表test,有A、B、C、D、E5列。如果使用gro转载 2014-06-13 20:14:28 · 747 阅读 · 0 评论 -
java调用sqlldr导入csv文件数据到临时表(代码实现)
java代码:package cn.com.file;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import原创 2014-06-13 20:15:06 · 4613 阅读 · 0 评论 -
查询及删除重复记录的SQL语句
转载自:查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录根据单个字段(Id)来判断 select * from table where Id in (select Id from table group by Id having count(Id) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只转载 2014-06-13 20:16:07 · 560 阅读 · 0 评论 -
Oracle reverse string之种种实现
转载自:http://blog.chinaunix.net/uid-7655508-id-4011549.html Oracle SQL里有undocument function实现reverse string的功能,那么能否用其他方式实现呢?这里介绍几种方法:1.undocument REVERSE FUNCTIONSELECT REVERSE('测试reverse转载 2014-06-13 20:17:35 · 1869 阅读 · 0 评论 -
【PROCEDURE调优推荐】Implementing and Using the PL/SQL Profiler
在公司内部有时候会给其它的同事进行一些内部的培训,这里大部分的同事都在用PL/SQL写程序,因此关于PL/SQL程序的性能调整是很多人关心的话题。对于一大段PL/SQL程序,如何快速找到这段程序里面最耗费时间的部分在哪里?如何快速地定位改程序的bottleneck?这时候需要dbms_profiler包。1. 首先需要检查dbms_profiler包有没有安装。如果没有则需要通过s转载 2014-06-13 20:19:58 · 656 阅读 · 0 评论 -
LNNVL函数使用
显示那些佣金比例(commision)不大于20%或者为NULL的员工的信息。CREATE TABLE plch_employees( employee_id INTEGER PRIMARY KEY, last_name VARCHAR2 (100), salary NUMBER, commission_pct转载 2014-06-13 20:23:55 · 900 阅读 · 0 评论 -
【分析函数】使用分析函数LAST_VALUE或11g LAG实现缺失数据填充及其区别
转载自:http://blog.chinaunix.net/uid-7655508-id-3736949.html 在“使用Partitioned Outer Join实现稠化报表”这篇文章中,讲述了实现稠化数据填充的方法。这篇文章和上述文章有所不同,主要讲述实现对指定的空行,按照前面非空或后面非空数据进行填充。原来这种实现数据填充的方法,主要是用LAST_VALUE+IGNORE NUL转载 2014-06-13 20:24:58 · 2785 阅读 · 0 评论 -
Oracle中的Truncate和Delete语句(与索引的关系)
转载自:首先讲一下,truncate命令: 语法:TRUNCATE TABLE table; 表格里的数据被清空,存储空间被释放。 运行后会自动提交,包括之前其它未提交的会话,因而一旦清空无法回退。 只有表格的创建者或者其他拥有删除任意表格权限的用户(如DBA)才能清空表格。 TRUNCATE TAB转载 2014-06-13 20:25:52 · 4494 阅读 · 0 评论 -
判断范围重叠的技巧讨论
题目:比如一个表,create table test (from number(10), to number(10));数据是:from to 1 10 11 20代数意义就是,第一条记录的数轴的范围是[1,10],第二条是[11,20] 显然是不重叠的;假如在第3条记录是:from to原创 2014-06-13 20:27:44 · 1086 阅读 · 0 评论 -
Oracle中反GROUP BY的写法
问题:比如有一张表TEST,GROUP BY后的数据如下:NAME CNTA 2B 4C 1.. ..CNT为出现的次数,现在要反过来写,需要得出数据AABBBBC请问一条SQL怎么写,而且需要考虑效率问题,不要去笛卡儿积解决方案:1.newKid提供的解决原创 2014-11-09 22:02:21 · 1165 阅读 · 0 评论