ORACle开发
文章平均质量分 71
Phoenix_99
这个作者很懒,什么都没留下…
展开
-
关于rollup,cube,grouping sets的个人理解
1.关于group by rollup的理解group by(字段1,字段2,字段3,字段4)oracle先group by(字段1,字段2,字段3,字段4),group by(字段1,字段2,字段3),group by(字段1,字段2),group by(字段1),最后对查询结果总的group by 例:select cgicode,stockyear,stockmont原创 2009-10-15 15:02:00 · 5935 阅读 · 0 评论 -
两表间大数量更新
<br />现在我们有2张表 如下:<br />T1--大表 10000笔 T1_FK_ID <br />T2--小表 5000笔 T2_PK_ID<br />T1通过表中字段ID与T2的主键ID关联<br />模拟数据如下:<br />--T2有5000笔数据<br />create table T2<br />as<br />select rownum id, a.*<br />from all_objects a<br />where 1=0;<br />-- Create/Recreate pr原创 2010-09-11 12:42:00 · 622 阅读 · 0 评论 -
utl_file学习
1.建立目录 SQL>create or replace directory AA as "e/sql";2.查看所建目录 SQL > select * from DBA_directories;3.读取数据 declare fhandle utl_file.file_type; strsql varchar2(100); strsql1 varchar2(4000); i int := 0;begin fhandle := utl_file.fopen('SQLDIRECTORY','11原创 2010-08-27 13:34:00 · 480 阅读 · 0 评论 -
动态sql
1. create or replace function makdt(tablename varchar2) return number is-- Result number; strsql varchar2(10000); -- s_rec refcursor; num number;begin execute immediate 'select count(*) from ' ||tablename into num ; dbms_output.put_line(nu原创 2010-08-20 16:40:00 · 642 阅读 · 0 评论 -
cursor 与refcursor及sys_refcursor的区别
今天简单的总结一下PL/SQL中cursor(光标/游标)的用法。 相信不少做开发或维护的DBA在找工作的时候,遇到过类似的面视问题:请简单的描述一下光标的类型,说一下普通光标和REF光标之间的区别,以及什么时候该正确应用哪一个? 这个题目,我着实难住了不少人,其实他们在具体开发的时候,也还是比较能够把握正确的光标的使用的,但就是说不出来,当然了,这与大家自身的沟流交通能力是有关系的。有的人不善于说,但做的却很好。扯的扯就走远了,最后唠叨一下:做技术这条路,能干不能说,或者说会干不会包装,路是走不"远"的原创 2010-08-20 10:55:00 · 12619 阅读 · 2 评论 -
使用批处理文件调用.sql文件
<br />1.创建11.sql文件<br /> 在E盘新建文件11.sql,输入内容:<br /> create table tt(id number,name varchar2(20));<br />insert into tt values(1,'kkk');<br />insert into tt values(2,'kkk');<br />commit;<br /> <br />2.创建批处理文件autoexec.bat<br /> 输入内容:<br /> sqlplus bms/bms@原创 2010-08-19 13:20:00 · 837 阅读 · 0 评论 -
高级查找
1.给结果集分页 select * from (select row_number() over(order by sal) as rn,sal from emp) x where rn between 6 and 102.跳过表中n行 select * from( select row_number() over(order by ename) rn,ename from emp ) where mod(rn,2) = 13.在外联中用"OR"逻辑 ① select * fro原创 2010-06-11 14:51:00 · 573 阅读 · 0 评论 -
范围处理
1. 定位连续值的范围 select proj_id,proj_start,proj_end from( select proj_id,proj_start,lead(proj_start) over(order by proj_start) startd,proj_end from dept_obj ) where startd = proj_end2.查找同一组或分区中行之间的差 注:求各部门员工之间工资差额,如果为最新来的员工差额为N/A select deptno,ena原创 2010-06-08 17:58:00 · 521 阅读 · 0 评论 -
关于to_char函数(重复)
<br />一 ,TO_CHAR(NUMBER)<br /> 1.1 格式图和简单说明<br /> <br /> 本函数把参数N转为一个VARCHAR2类型的数值。N可以是NUMBER,BINARY_FLOAT,或者BINARY_DOUBLE。如果不带格式,那么函数会把N转换为足以表示N的VARCHAR2字符串。<br /> 格式表参考:<br /> <br />序号<br /> 格式 简例 说明 <br /> 1 ,(逗号) '9999,99原创 2010-06-08 14:49:00 · 2183 阅读 · 0 评论 -
Oracle邮件---调查中。。。。
<br />CREATE OR REPLACE PROCEDURE send_mail (<br /> p_recipient IN VARCHAR2,<br /> p_message IN VARCHAR2,<br /> p_subject IN VARCHAR2 default 'Oracle Perf Report '||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),<br /> p_sender IN VARCHAR2 def原创 2010-09-10 18:00:00 · 822 阅读 · 0 评论 -
Oralce包,体
<br />1.包的主要构成<br /> 包包括包的规范和包体<br /> 包的规范:就是规范了包的接口,而包体则是实现包规范的具体内容。<br /> <br /> 实例如下:<br /> 包的规范:<br /> create or replace package emp_package is<br /> g_deptno number(3) := 30;<br /> procedure add_employee(eno number,name varchar2,salary num原创 2010-09-01 17:24:00 · 1548 阅读 · 2 评论 -
找到截止日不是下一条开始日的数据。
select cgicode,destccode from fobvtdestupric where ( ( vtexcetodate is null and vtexcedate TO_DATE('9/1/2016','mm/dd/yyyy')) ) and status='70'minus select cgicode,destccode fr原创 2016-10-25 22:53:52 · 384 阅读 · 0 评论 -
oracle 正则表达式
with temp as(select 'BR.777-1' A from dualunion allselect 'BS.6/175' A from dualunion allselect 'D.140 Supplement 1' A from dualunion allselect 'E.191(2000) Amendment 1' A from dual)原创 2010-07-07 09:56:00 · 366 阅读 · 0 评论 -
Oracle动态游标入门
一、最简单的一个动态游标:CREATE OR REPLACE PROCEDURE test_curisstrSql1 varchar(1000);TYPE TCUR IS REF CURSOR; CUR TCUR;AC_WHERE VARCHAR2(100);AC VARCHAR2(100); BEGINAC_WHERE := '(52228,52230)';转载 2012-04-16 16:03:36 · 892 阅读 · 0 评论 -
变量
1.定义变量a=abc2.取消变量unset a3.查看变量setenv4.HOME当前用户的主目录PATH 当前用户的可执行文件的搜索目录LANG 程序应该使用的默认语言PS1:行提示符LANG=enlocale -abasename /etc/X11 ----截取文件名,结果为X11export $a----显示变量export SKIK --把变量转化为环境变量原创 2010-11-13 00:28:00 · 571 阅读 · 0 评论 -
开窗函数
分析函数Over用法数据库2007-08-25 23:01:18阅读24评论0 字号:大中小 订阅这段分析函数说明不算很详细,不过也可以帮我们解决很多问题了,记在这里备用吧! 格式 analytic_function OVER ( [PARTITION BY value_expr] [ ORDER BY expr [ASC/DESC] [NULLS FIRST/NULLS LAST] [ROWS/RANGE BETWEEN UNBOUNDED PRECEDING/转载 2010-12-29 10:37:00 · 1598 阅读 · 0 评论 -
sql到oracle
<br />1.查找登录用户<br />select sid,username,status from v$session;<br /> <br />2.查找用户ip及端口号<br /> netstat -anp<br /> <br />3.查看关系图<br /><br /> <br /> <br /> <br />原创 2010-12-28 21:38:00 · 452 阅读 · 0 评论 -
table函数
<br />1、table()结合数组:<br /> <br />SQL> create or replace type t_test as object(<br /> 2 id integer,<br /> 3 rq date,<br /> 4 mc varchar2(60)<br /> 5 );<br /> 6 /<br /> <br />Type created<br /> <br />SQL> create or replace type t_test_table as tabl转载 2010-09-02 13:32:00 · 586 阅读 · 0 评论 -
oracle10g批量绑定forall bulk collect
oracle10g批量绑定forall bulk collect批量绑定(Bulk binds)可以通过减少在PL/SQL和SQL引擎之间的上下文切换(context switches )提高了性能.<br />批量绑定(Bulk binds)包括:<br />(i) Input collections, use the FORALL statement,一般用来改善DML(INSERT、UPDATE和DELETE) 操作的性能<br />(ii) Output collections, use BULK转载 2010-09-15 17:43:00 · 561 阅读 · 0 评论 -
日期操作
1.判断是否为闰年 select to_char(last_day(add_months(trunc(to_date('2000-03-03','yyyy-mm-dd'),'Y'),1)),'DD') from dual2.确定一年内的天数 select add_months(trunc(sysdate,'Y'),-12),trunc(sysdate,'Y'), trunc(sysdate,'Y') - add_months(trunc(sysdate,'Y'),-12) from dual3.从日期中原创 2010-06-08 11:07:00 · 1116 阅读 · 0 评论 -
关于日期
1.计算日期的加减 select to_date('2010-6-7','yyyy-mm-dd') -5 hd_minus_d,to_date('2010-06-07','yyyy-mm-dd') + 5 hd_add_d, add_months(to_date('2010-06-07','yyyy-mm-dd'),-5) hd_minus_m, add_months(to_date('2010-06-07','yyyy-mm-dd'),5) hd_add_m, add原创 2010-06-07 17:46:00 · 914 阅读 · 0 评论 -
Oracle 数据库监听配置
<br />Oracle 数据库监听配置 收藏一、监听器(LISTENER) 监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。 二、本地服务名(Tnsname) Oracle客户端与服务器端的连接是通过客户端发出连接请求,由服务器端监听器对客户端连接请求进行合法检查,如果连接请求有效,则进行连接,否则拒绝该连接。本地服务名是Oracle客户端网络配置的一转载 2010-07-12 14:42:00 · 709 阅读 · 0 评论 -
报表和数据仓库运算
1.将结果集转至为一行 with temp as( select 10 deptno,3 cnt from dual union all select 20 deptno,5 cnt from dual union all select 30 deptno,6 cnt from dual )select sum(decode(deptno,10,cnt,0)) deptno_10, sum(decode(deptno,20,cnt,0)) deptno_20, sum(原创 2010-06-29 14:28:00 · 599 阅读 · 0 评论 -
统计数值,如果隔行则算一行
with temp as(select 1 col1,2 col2 from dualunion allselect 2 col1,2 col2 from dualunion allselect 3 col1,2 col2 from dualunion allselect 4 col1,9 col2 from dualunion allselect 5 col1,9 col2 from dualu原创 2010-04-27 17:59:00 · 552 阅读 · 0 评论 -
触发器
oracle中存储的层次结构如下: 1)数据库由一个或多个表空间组成。 2)表空间由一个或多个数据文件文件组成,一个表空间包含段。 3)段(表,索引等)由一个或多个盘区组成。段存在于表空间中,但在表空间中可以有许多数据文件中的数据。 4)盘区是在磁盘上连续快的组,一个盘区在一个表空间中,而且,总是在表空间中的单一文件中。 5)快是在数据库中最小的分配单元。快是数据库使用的最小的I/O单元。 se原创 2010-03-15 18:32:00 · 980 阅读 · 0 评论 -
函数
create or replace function get_user return varchar2 is v_user varchar2(100);begin select ename into v_user from emp where deptno = 8; return v_user;end get_user; SQL> var v1 varchar2(100);SQL> exe原创 2010-03-08 18:07:00 · 336 阅读 · 0 评论 -
过程
create or replace procedure out_time isbegin dbms_output.put_line(systimestamp);end out_time;create or replace procedure add_employee(eno number,sal number,dno number,name varchar2 default clerk)原创 2010-03-08 16:59:00 · 500 阅读 · 0 评论 -
嵌套表,索引表,集合的学习
declare type a1_array_type is varray(10) of int; type a2_array_type is varray(20) of a1_array_type; nv1 a2_array_type := a2_array_type(a1_array_type(58,100,102), a1_array_type(55,6,73),a1_ar原创 2010-03-03 15:52:00 · 469 阅读 · 0 评论 -
java调用存储过程
存储过程: create or replace procedure insert_emp (empid in number, empname in varchar2, empsal in number) as begin insert into emp(empno,ename,sal) values(empid,empname,empsal); end insert_emp; java代码:原创 2010-02-04 15:13:00 · 449 阅读 · 0 评论 -
分层查询
1.表示父子关系 select a.ename || ' works for ' || b.ename as emps_and_mgrs from emp a,emp b where a.mgr = b.empno2.表示子-父-祖关系 select ltrim(sys_connect_by_path(ename,'--->'),'--->') leaf_branch_root from emp where level = 3 start with ename = 'MILLER'connect by p原创 2010-07-12 14:35:00 · 797 阅读 · 0 评论 -
数据添加(insert),删除(delete),更新(update)
1.将数据插入到相同结构不同的表中 insert all when loc in (NEW YORK,BOSTON) then into dept_east(deptno,dname,loc) values(deptno,dname,loc); when loc=CHICAGO then into dept_mid(de原创 2010-05-18 10:26:00 · 1149 阅读 · 0 评论 -
如何把java中的arrayList转化为oracle中的数组(array) --转
<br />在写存储过程中经常会遇到把java中的arrayList转化为oracle中数组,(arrayList中存的是一些java对象)简单总结一下.<br />例:arrayList中存在一些people对象<br />1.首先要在数据库中建立相应的java对象和数组,<br />如: /* 和java对象对应的数据库对象 */<br />CREATE TYPE peopleOracleObject AS OBJECT <br />(<br /> peopleOracleID NUMBER(8)转载 2010-07-29 09:20:00 · 3495 阅读 · 0 评论 -
分区表的使用
在大型的企业利用或企业级的数据库利用中,要处理的数据量平常可以到达几十到几百GB,有的甚至可以到TB级。固然存储介质和数据处理技术的进展也很快,但是仍然不能满足用户的需求,为了使用户的大批的数据在读写操纵和查询中速度更快,Oracle提供了对表和索引进行分区的技术,以改善大型利用系统的性能。使用分区的优点: 1、加强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用; 2、保护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可; 3、均衡I/O:可以把不同的分区映射到转载 2010-07-26 15:55:00 · 600 阅读 · 0 评论 -
oracle merge into用法及例子
<br />oracle merge into用法及例子 ORACLE 9I中加入了MERGE<br /> 语法:<br /> MERGE [hint] INTO [schema .] table [t_alias]<br /> USING [schema .] { table | view | subquery } [t_alias]<br /> ON ( condition )<br /> WHEN MATCHED THEN merge_update_clause<br /> WHEN NO转载 2010-07-21 14:35:00 · 880 阅读 · 0 评论 -
关于数字
1.生成累乘积 select empno,ename,sal,exp(sum(ln(sal)) over(order by sal,empno)) as running_prod from emp where deptno = 10 2.计算累计差 select ename,sal,sum(case when rn = 1 then sal else -sal end) ove原创 2010-05-25 15:08:00 · 662 阅读 · 0 评论 -
Oracle DBMS_JOB:每隔特定时间执行特定任务
<br />Oracle JOB: <br />一、设置初始化参数 job_queue_processes <br /><br />sql> alter system set job_queue_processes=n;(n>0) <br />job_queue_processes最大值为1000 <br />查看job queue 后台进程 <br />sql>select name,description from v$bgprocess; <br />二、dbms_job package 用法转载 2010-07-20 13:21:00 · 2917 阅读 · 0 评论 -
其它sql
1.求某一年的天数 select 'Days in 2010: '|| to_char(add_months(trunc(sysdate,'y'),12)-1,'DDD') from dual2.查找字母数字混合的字符串 with temp as(select '123434' id from dualunion allselect '2323 aa' id from dualunion allselect 'aaaadgb' id from dualunion allselect 'aa 123' id原创 2010-07-14 17:44:00 · 594 阅读 · 0 评论 -
关于字符串处理
1.遍历字符串(遍历emp表中的ename=KING的值) select substr(e.ename,iter.pos,1) as c from (select ename from emp where ename = KING) e, (select id as pos from t10) iter where iter.pos 2.字符串中带有带引号原创 2010-05-19 14:33:00 · 1077 阅读 · 0 评论 -
关于元数据
1.列出所有表 select table_name from all_tables 2.列出表EMP的所有列select * from all_tab_columns where owner=DMS and table_name=EMP 3.列出表EMP的索引select table_name,index_name,column_name,column_po原创 2010-05-19 13:29:00 · 582 阅读 · 0 评论 -
游标检索
declare cursor emp_cursor is select ename,salary from emp where empno = 2; v_name emp.ename%type; v_sal emp.salary%type;begin open emp_cursor; loop fetch emp_cursor into v_name,v_sal; ex原创 2010-03-04 17:16:00 · 614 阅读 · 0 评论