随笔分类 -  ORACLE

摘要:本篇主要内容如下:5.1异常处理概念5.1.1预定义的异常处理5.1.2非预定义的异常处理5.1.3用户自定义的异常处理5.1.4用户定义的异常处理5.2异常错误传播5.2.1在执行部分引发异常错误5.2.2在声明部分引发异常错误5.3异常错误处理编程5.4在PL/SQL中使用SQLCODE,SQLERRM异常处理函数即使是写得最好的PL/SQL程序也会遇到错误或未预料到的事件。一个优秀的程序都应该能够正确处理各种出错情况,并尽可能从错误中恢复。任何ORACLE错误(报告为ORA-xxxxx形式的Oracle错误号)、PL/SQL运行错误或用户定义条件(不一写是错误),都可以。当然了,PL/S 阅读全文
posted @ 2012-01-10 17:52 左正 阅读(70474) 评论(0) 推荐(7) 编辑
摘要:select top1*from demotab where ('"&start_time&"'<=start_time and'"&end_time&"'>=end_time) or--判断新日期段与原日期段是否存在外包含('"&start_time&"'>=start_time and'"&end_time&"'<=end_time) or--判断新日期段与原日 阅读全文
posted @ 2012-01-09 10:05 左正 阅读(633) 评论(0) 推荐(0) 编辑
摘要:1.概念数据字典是oracle数据库用来存贮数据库结构信息的地方。数据字典是用来描述数据库数据的组织方式的,由表和视图组成。数据字典由脚本$oracle_home/rdbms/admin/catalog.sql创建。2.分类视图有三种实例:user_*(当前用户所拥有对象的有关信息),all_*(当前用户可访问对象的信息),dba_*(数据库中所有对象的信息)。查询数据字典数据时使用大写字母。可用upper\lower函数转换。一下以user_*实例举例(如没有user_*,则依次以all_*、dba_*举例)。3.类别3.1 关系群集、表、视图群集 user_clusters 群集 use. 阅读全文
posted @ 2012-01-06 15:46 左正 阅读(261) 评论(0) 推荐(0) 编辑
摘要:格式:MONTHS_BETWEEN(DATE1,DATE2)即MONTHS_BETWEEN(日期1,日期2)MONTHS_BETWEEN函数返回两个日期之间的月份数。如果两个日期月份内天数相同,或者都是某个月的最后一天,返回一个整数,否则,返回数值带小数,以每天1/31月来计算月中剩余天数。如果日期1比日期2小,返回值为负数。例:months_between(to_date('1999.11.29','yyyy.mm.dd'), to_date('1998.11.29','yyyy.mm.dd'))返回12注:两个参数均为同样月份 阅读全文
posted @ 2012-01-05 14:16 左正 阅读(626) 评论(0) 推荐(0) 编辑
摘要:在我所做过和参与的大多数项目中,都会有用户提出的复杂的一些统计报表之内的功能要求,根据统计的复杂程度、效率及JAVA程序调用的方便性方面考虑,主要总结出以下几种方案:1、SQL语句该方案只能实现一些相对简单些的查询统计功能,语句嵌套多、写起来特别复杂,使程序的可读性变差,下面是实现一个按照上级机关统计下级各个公安机关管辖范围内对应的各个类别社会单位数量的统计功能的SQL:Sql代码 selectrpad(gajg_dm,12,'0'),sum(decode(C01,0,0,C01))asC01,sum(decode(C02,0,0,C02))asC02,sum(decode(C 阅读全文
posted @ 2012-01-05 11:12 左正 阅读(706) 评论(0) 推荐(0) 编辑
摘要:一,什么是记录Record和PL/SQL表? 记录Record:由单行多列的标量类型构成的临时记录对象类型。类似于多维数组。 PL/SQL表:由多行单列的索引列和可用列构成的临时索引表对象类型。类似于一维数组和键值对。 都是用户自定义数据类型。 二,Record + PL/SQL表 用途是什么? Record + PL/SQL表可以进行数据的多行多列存储。这样我们就可使用Record + PL/SQL表在需要时封装一个临时的表对象,进行传递和操作。 通过Record自定义表结构,封装一条记录。PL/SQL表声明 可用列 类型 为Record类型(将可用列指向Record类型变量),每个索引.. 阅读全文
posted @ 2012-01-05 11:08 左正 阅读(316) 评论(0) 推荐(0) 编辑
摘要:decode()函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能。 阅读全文
posted @ 2012-01-05 10:58 左正 阅读(1018) 评论(0) 推荐(0) 编辑
摘要:LEAST()exp_list是一列表达式,返回其中最小的表达式,每个表达式都被隐含的转换第一个表达式的数据类型,如果第一个表达式是字符串数据类型中的任何一个,将返回的结果是varchar2数据类型,同时使用的比较是非填充空格类型的比较。UID该函数没有参数,返回唯一标示当前数据库用户的整数。USER返回当前用户的用户名USERENV()基于opt返回包含当前会话信息。opt的可选值为:ISDBA 会话中SYSDBA脚色响应,返回TRUESESSIONID 返回审计会话标示符ENTRYID 返回可用的审计项标示符INSTANCE在会话连接后,返回实例标示符。该值只用于运行Parallel .. 阅读全文
posted @ 2012-01-05 10:27 左正 阅读(213) 评论(0) 推荐(0) 编辑
摘要:6、单行转换函数单行转换函数用于操作多数据类型,在数据类型之间进行转换。CHARTORWID()c 使一个字符串,函数将c转换为RWID数据类型。SELECT test_id from test_case where rowid=CHARTORWID('AAAA0SAACAAAALiAAA')CONVERT(,[,])c尾字符串,dset、sset是两个字符集,函数将字符串c由sset字符集转换为dset字符集,sset的缺省设置为数据库的字符集。HEXTORAW()x为16进制的字符串,函数将16进制的x转换为RAW数据类型。RAWTOHEX()x是RAW数据类型字符串,函数 阅读全文
posted @ 2012-01-05 10:24 左正 阅读(314) 评论(0) 推荐(0) 编辑
摘要:POWER(,)返回n1的n2次方ROUND(,)返回舍入小数点右边n2位的n1的值,n2的缺省值为0,这回将小数点最接近的整数,如果n2为负数就舍入到小数点左边相应的位上,n2必须是整数。select ROUND(12345,-2),ROUND(12345.54321,2)FROM dualROUND(12345,-2) ROUND(12345.54321,2)12300 12345.54SIGN()如果n为负数,返回-1,如果n为正数,返回1,如果n=0返回0SIN()返回n的正玄值,n为弧度。SINH()返回n的双曲正玄值,n为弧度。SQRT()返回n的平方根,n为弧度TAN()返回n的 阅读全文
posted @ 2012-01-05 10:22 左正 阅读(201) 评论(0) 推荐(0) 编辑
摘要:SOUNDEX()返回与c1发音相似的词。select SOUNDEX('dawes') Dawes SOUNDEX('daws') Daws,SOUNDEX('dawson') from dualDawes Daws DawsonD200 D200 D250TRANSLATE(,,)将c1中与c2相同的字符以c3代替select TRANSLATE('fumble','uf','ar') test from dualTEXTrambleTRIM([[]] from c3)将c3串中的第一个,最后一 阅读全文
posted @ 2012-01-05 10:21 左正 阅读(207) 评论(0) 推荐(0) 编辑
摘要:INITCAP()c1为一字符串。函数将每个单词的第一个字母大写其它字母小写返回。单词由空格,控制字符,标点符号限制。select INITCAP('veni,vedi,vici') Ceasar from dualCeasarVeni,Vedi,ViciINSTR(,[,[,]])c1,c2均为字符串,i,j为整数。函数返回c2在c1中第j次出现的位置,搜索从c1的第i个字符开始。当没有发现需要的字符时返回0,如果i为负数,那么搜索将从右到左进行,但是位置的计算还是从左到右,i和j的缺省值为1。select INSTR('Mississippi','i 阅读全文
posted @ 2012-01-05 10:19 左正 阅读(204) 评论(0) 推荐(0) 编辑
摘要:一般的to_char是这样用的to_char(sysdate,'YYYY-MM-DD hh:mi:ss AM'),也有几个突出点的用法:to_char(sysdate, 'dd') 查看今天是几号to_char(sysdate, 'ww') 查看这是这个月第几个星期to_char(sysdate, 'mm') 查看这是一年中第几个月to_char(sysdate, 'yyyy') 查看年份last_day(to_date('2007-02-01','YYYY-MM-DD'))查看一个 阅读全文
posted @ 2012-01-05 10:15 左正 阅读(356) 评论(0) 推荐(0) 编辑
摘要:在Oracle数据库中,SOUNDEX函数返回字符串参数的语音表示形式,相对于比较一些读音相同,但是拼写不同的单词是非常有用的。SOUNDEX函数的语法:SOUNDEX(string)计算语音的算法:1.保留字符串首字母,但删除a、e、h、i、o、w、y2.将下表中的数字赋给相对应的字母(1) 1:b、f、p、v(2) 2:c、g、k、q、s、x、z(3) 3:d、t(4) 4:l(5) 5:m、n(6) 6:r3. 如果字符串中存在拥有相同数字的2个以上(包含2个)的字母在一起(例如b和f),或者只有h或w,则删除其他的,只保留1个4.只返回前4个字节,不够用0填充示例:soundex(‘t 阅读全文
posted @ 2012-01-04 16:47 左正 阅读(487) 评论(1) 推荐(0) 编辑
摘要:Oracle PL/SQL 过程调试的输出方法1.最基本的DBMS_OUTPUT.PUT_LINE()方法。随便在什么地方,只要是BEGIN和END之间,就可以使用DBMS_OUTPUT.PUT_LINE(output);然而这会有一个问题,就是使用该函数一次最多只可以显示255个字符,否则缓冲区会溢出。此外,函数DBMS_OUTPUT.ENABLE(20000)这种函数,仅仅是设置整个过程的全部输出缓冲区大小,而非DBMS_OUTPUT.PUT_LINE()的缓冲区大小。对于超过255个字符的变量,使用DBMS_OUTPUT.PUT_LINE()方法是没有效的。据说在Oracle10中,解除 阅读全文
posted @ 2012-01-04 16:17 左正 阅读(2796) 评论(0) 推荐(0) 编辑
摘要:表函数可接受查询语句或游标作为输入参数,并可输出多行数据。该函数可以平行执行,并可持续输出数据流,被称作管道式输出。应用表函数可将数据转换分阶段处理,并省去中间结果的存储和缓冲表。1。 用游标传递数据利用游标 REF CURSOR 可将数据集(多行记录)传递到PL/SQL函数:SELECT FROM TABLE (myfunction (CURSOR (SELECT FROM mytab))); 2。 利用两个实体化视图(或表)作为样板数据CREATE MATERIALIZED VIEW sum_sales_country_mvBUILD IMMEDIATEREFRESH COMPLETE.. 阅读全文
posted @ 2012-01-04 14:04 左正 阅读(4016) 评论(0) 推荐(0) 编辑
摘要:在实际的应用中,为了让PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成。REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合在可以返回前,必须进行具体化。 9i 通过引入的管道化表函数纠正了后一种情况。表函数是返回整个行的集(通常作为一个集合)的函数,可以直接从 SQL 语句中进行查询,就好像它是一个真正的数据库表一样。管道化表函数与之相似,但是它像在构建时一样返回数据,而不是一次全部返回。管道化表函数更加有效, 因为数据可以尽可能快地返回。 管道化表函数必须返回一个集合。在函数中,PIPE ROW 语句被用来返回该集合的单. 阅读全文
posted @ 2012-01-04 14:04 左正 阅读(462) 评论(0) 推荐(0) 编辑
摘要:如何使用 Oracle Round 函数 (四舍五入)描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果。SELECT ROUND( number, [ decimal_places ] ) FROM DUAL参数:number : 欲处理之数值decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 )Sample :select round(123.456, 0) from dual; 回传 123 select round(123.456, 1) from dual; 回传 123.5 select round... 阅读全文
posted @ 2012-01-04 11:33 左正 阅读(22951) 评论(0) 推荐(0) 编辑
摘要:oracle的nvl函数的用法通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值 select nvl(sum(t.dwxhl),1) from tb_jhde t where zydm=-1 这里关心的nvl的用法,nvl(arg,value)代表如果前面的arg的值为null那么返回的值为后面的value 如: NVL(a,b)就是判断a是否是NULL,如果不是返回a的值,如果是返回b的值 通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值另一个有关的有用方法 declare i integer select nvl(sum(t.dwx... 阅读全文
posted @ 2012-01-04 11:28 左正 阅读(727) 评论(0) 推荐(0) 编辑
摘要:返回特定日期所在月份的最后一天 例: SQL>SELECT last_day(sysdate) FROM dual; LAST_DAY(SYSDATE) ----------------------------- 2008-8-31 例如:找出每个月倒数第三天入职的员工 SELECT * FROM EMP WHERE last_day(hiredate)-2=hiredate; 阅读全文
posted @ 2011-12-31 16:27 左正 阅读(360) 评论(0) 推荐(0) 编辑