[转载]DBMS_SCHEDULE
您是否厌倦了在 dbms_job 中手工管理时间间隔的繁琐,需要数据库内部有个新调度系统? 让我们就着眼于数据库本身来解决这个问题。你们中的一部分人可能广泛使用 dbms_job 程序包来将数据库作业提交到后台运行,控制运行的时间或时间间隔,报告故障等等。 然而,我感觉你们中的大部分人不会这么做。 这个程序包存在的问题是它只能够处理 PL/SQL 代码段 — 仅能处理匿名程序块和存储程序单元。 它不能在数据库外部处理操作系统命令文件或可执行文件中的任何东西。 为此,您将不得不求助于操作系统调度实用工具(如 Unix 中的 cron 或 Window
dbms_output输出前导空格
SQL> BEGIN2 DBMS_OUTPUT.PUT_LINE(' LOVE2008');3 DBMS_OUTPUT.PUT_LINE(' ');4 DBMS_OUTPUT.PUT_LINE(' THANK YOU');5 END;6 /LOVE2008THANK YOUPL/SQL 过程已成功完成我原本的打算是要在前面输出空格,可是输出的结果去不是我想要的,如何办哪?解决方法很简单,只要把空格换成CHR(9),用CHR(0)表示换行.SQL> BEGIN 2 DBMS_OUTPUT.PUT_LINE(CHR(9)||CHR(9)||'LOVE2008'); 3 DBMS_OUTPUT.PUT_LINE(CHR(0)); 4 DBMS_OUTPUT.PUT_LINE(CHR(9)||CHR(9)||'THANK YOU'); 5 END; 6 / LOVE2
一个字符形式相减的问题
今天在CSDN看见网友问了一个这样的问题。《问题描述》:TEST表有个字段NAME是VARCHAR2类型,里面的数据既有字母又有数字形式的列。例如:ABE89,322de。我如何对这些数据进行减1变成ABE88,322dd原贴:http://community.csdn.net/Expert/topic/5634/5634437.xml?temp=.6460535〈我的解答〉:[@more@]SQL> select substr(name,1,length(name)-1)||chr(ascii(substr(name,-1)) -1) 2 from test where id in (12,13);SUBSTR(NAME,1,LENGTH(NAME)-1)||CHR(ASCII(S------------------------------------------hl232112hhicSQL> select name
学习笔记(二)
1:create procedure proc_name authid current_user/authid definer 创建存储过程的两种权限模式2:UTL_FILE包的简单用法 PROCEDURE FCLOSEPROCEDURE FCLOSE_ALLPROCEDURE FCOPYPROCEDURE FFLUSHPROCEDURE FGETATTRFUNCTION FGETPOS RETURNS BINARY_INTEGERFUNCTION FOPEN RETURNS RECORDFUNCTION FOPEN_NCHAR RETURNS RECORDPROCEDURE FREMOVEPROCEDURE PUT_RAWPROCEDURE PUT_NCHARPROCEDURE PUT_LINE_NCHARPROCEDURE PUT_LINEPROCEDURE PUTF_NCHARPROCEDURE PUTFPROCEDURE PUTPROCEDURE NEW_LINEFUNCTION IS_OPEN RETURNS BOOLEANPROC
一个简单的SQL
在8.1.7的版本之前,是不能够使用分析函数。那如何实现这种情况哪?在之前的版本中。SQL> select * from test; ID---------- 111 111 111 100 100 111 120 111 111 111 100 ID---------- 100 111 120实现为: ID1 ID2---------- ---------- 100 1 100 2 100 3 100 4 111 1 111 2 111 3 111
一次插入多表的语法
1:INSERT ALL2:INSERT FIRST的语法3:测试用例create table a( id number, name varchar2(20), addr varchar2(20));create table b( id number, name varchar2(20), addr varchar2(20));create table c( id number, name varchar2(20), addr varchar2(20));insert into c values(1,'wzk','hlj');insert into c values(2,'zx ','xj ');insert into c values(3,'www','cds');[@more@]---------无条件插入insert allinto a values(id,name,addr)into b values(id,name,addr)select id,name,addr from c;-------------------------
dbms_random随机包
SQL> desc dbms_randomPROCEDURE INITIALIZE参数名称 类型 输入/输出默认值?------------------------------ ----------------------- ------ --------VAL BINARY_INTEGER INFUNCTION NORMAL RETURNS NUMBERFUNCTION RANDOM RETURNS BINARY_INTEGERPROCEDURE SEED参数名称 类型 输入/输出默认值?------------------------------ ----------------------- ------ --------VAL BINARY_INTEGER INPROCEDURE SEED参数名称 类型 输入/输出默认值?------------------------------ ----------------------- ------ --------VAL VARCHAR2 IN
我的外部表测试一
今天学习了下外部表的基本用法。create table test(id number,name char(20))organization external(type oracle_loaderdefault directory load_areaaccess parameters(records delimited by newlinefields terminated by ','(id,name))location('insert_test.txt'))reject limit unlimited;具有create any directory权限create directory load_area as 'd:';----这个只是外部表的用法一[@more@]
VC6下pro*c/c++的配置
1:tools->options->directories->添加目录:2:projects->settings->添加ORACLE[@more@]1:tools->options->directories->添加目录: D:ORACLEORA92OCILIB D:ORACLEORA92PRECOMPPUBLIC2:projects->settings->添加ORACLE 在PROJECTS OPTIONS里面添加一个 D:oracleora92precompliborasql9.lib搞了好长时间,终于搞定了。呵呵记录下作为纪念!!
NULL的学习
今天看了下yangtingkun老大关于NULL的总结。http://yangtingkun.itpub.net/post/468/245107[@more@]今天看了下yangtingkun老大关于NULL的总结。虽然自己以前也知道这个,但是真的在开发过程中能够考虑到这些真的不太多,在开发的时候,我们总是为了完成任务而做,所以考虑的总是不太仔细。下面节选自:yangtingkun老大的BLOGAND操作图表变为:ANDTRUEFALSENULLTRUETRUEFALSENULLFALSEFALSEFALSEFALSENULLNULLFALSENULLOR操作图表变为:ORTRUEFALSENULLTRUETRUETRUETRUEFALSETRUEFALSENULLNULLTRUENULLNULL对这个我总结几句容易记住的话:(
动态SQL的一个限制
DDL不允许使用绑定变量[@more@]今天同事在开发PL/SQL程序的时候,就是报绑定变量的错误。最后才发现:PL/SQL中不允许DDL动态SQL带有绑定变量。记录下来,以免忘了 。。。。
DBMS_STANDARD包
COMMIT,ROLLBACK[@more@]原来一直认为COMMIT这些是事务方面的专用,从来没有研究过这些东西到底是作为ORACLE的一个什么哪?有天看到了yangtingkun老大写的一篇文章,才让我了解到这些是标准包里面的存储过程,呵呵。
计算工作时间的问题
计算工作时间的问题[@more@]网上很多这个方法,但是发现大部分都是PL/SQL的。所以自己准备实验下看能否用一个SQL语句来实现。业务是24小时运作,以下四个时间段是休息时间:01:00--03:0007:00--08:3012:00--13:3018:00--18:50我的解决方法:with c as( select to_date('2:30','hh24:mi')+rownum/1440 a from dual connect by to_date('2:30','hh24:mi')+rownum/1440<30 /> start with rownum=1)select count(*) from c where c.a<00 /> (c.a>to_date('03:00','hh24:mi') and c.a<00 /> (c.a>to_date('08:30','hh2
行列转换的问题
行列转换的问题[@more@]我的测试数据:LOVE2008>select * from test; ID NAME ---------- --------------------1 我 1 是 1 谁 2 我 2 是 2 love2008 6 rows selected. 这个是10G的处理方法:(增加了connect_by_isleaf,CONNECT_BY_ROOT,CONNECT_BY_ISCYCLE)select replace(name,'/','') from (select connect_by_isleaf ll,sys_connect_by_path(name,'/') name from (select row_number()over(partition by id order by id) c_id,name,id,row_number()over(partition by id order by id) -1 p_idfrom test) aconnect by prior c_id=p
删除指定父节点的所有子节点
删除3节点及其以下的所有子节点 [@more@]今天一个网友问到,如何删除一个父节点下面的所有子节点。LOVE2008>select * from test;C_ID P_ID---------- ----------1 02 13 14 25 26 39 610 98 rows selected.--删除3节点及其以下的所有子节点LOVE2008>delete from test where c_id in(2 select c_id from test connect by prior c_id=p_id start with p_id=33 union4 select 3 from dual5 );4 rows deleted.LOVE2008>select * from test;C_ID P_ID---------- ----------1 02 14 25 2