- 浏览: 725289 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (442)
- 中间件 (20)
- hibernate (13)
- spring (20)
- 数据库 (78)
- struts (8)
- ibatis (4)
- 前端 (61)
- linux,windows (21)
- it大环境 (32)
- IDE工具 (36)
- 感悟 (6)
- java基础 (40)
- 经典面试题 (10)
- exception总结 (14)
- 软件设计 (8)
- 工具类应用及新技术 (48)
- php (2)
- 微信 (1)
- 设计模式 (2)
- 重构 (3)
- 管理 (2)
- 工作笔记 (1)
- jmx (1)
- 算法 (4)
- 多线程同步 (2)
- 代码管理工具 (5)
- 代码检测及测试 (2)
- 缓存服务 (1)
- SOA及ROA (5)
- groovy (1)
- 网络编程 (2)
- 大数据 (6)
最新评论
-
love398146779:
我当然不能全写上面了,这只是其中一部分https连接。
java 建立 https连接 -
yuenkin:
大哥,这是双向认证吗?
java 建立 https连接 -
issu:
例如以下代码能遍历字符串"Tom:M ...
<c:forTokens>标签delims截取字符 -
love398146779:
2*3*5=30,是30个以上的请求才拒绝呀。
tomcat的maxThreads、acceptCount(最大线程数、最大排队数) -
love398146779:
2台跟1台一样的效果。
zookeeper与activemq最新存储replicatedLevelDB整合
--从0和从1开始效果是一样的,oracle比较智能
select substr('hello',1,3) 字符串截取,
length('hello') 字符串长度,
replace('hello','o','l') 字符串替换
from dual;
--显示所有雇员姓名和姓名后的三个字符
select ename ,substr(ename,length(ename)-2) from emp;
--substr()函数可以采用倒着截取的方式,只要输入的位置是负数,就可以倒着进行
select ename ,substr(ename,-3,3) from emp;
--2.数值函数
--四舍五入:round();截断小数位trunc();取模mod()
select round(789.536) from dual;
--保留两位小数
--保留两位小数
select round(789.536,2) from dual;
--直接对整数进行四舍五入
select round(789.536,-2) from dual;
--trunc不保留小数,也不进行四舍五入
select trunc(789.536) from dual;
select trunc(789.536,2) from dual;
select trunc(789.536,-2) from dual;
--去模
select mod(10,3) from dual;
--显示雇员进入公司的星期数
select sysdate from dual;
select empno,ename,round((sysdate-hiredate)/7) from emp;
--months_between():求出给定日期范围的月数
--add_months():在指定日期上加上指定月数,求出之后的日期
--next_day():下一个的今天是那一个日期
--last_day():求出给定日期的最后一天日期
select empno,ename, months_between (sysdate,hiredate) from emp;
select add_months(sysdate,4) from dual;
select next_day(sysdate,'星期一') from dual;
select last_day(sysdate) from dual;
--4.转换函数
--to_char:转换成字符串;
--to_number:转换成数字;
--to_date:转换成日期
--利用to_char()函数进行拆分,拆分的时候必须指定拆分的通配符:
--年:y,年是四位数字,所以用yyyy表示
--月:m,月是两位数字,所以使用mm表示
--日:d,日是两位数字,所以使用dd表示
select empno,ename,to_char(hiredate,'yyyy') year,
to_char(hiredate,'mm') month,to_char(hiredate,'dd') day
from emp;
--使用to_char()进行日期显示的转换功能
select ename, to_char(hiredate,'yyyy-mm-dd') from emp;
--fm可以去掉前导0
select ename, to_char(hiredate,'fmyyyy-mm-dd') from emp;
--可以使用to_char()进行数字格式化
select ename,to_char(sal,'99,999') from emp;
--希望数字可以明确的表示区域,可以使用以下两种符号:
--$ 表示美元;L Local的缩写,一本地语言进行金额显示
select ename,to_char(sal,'$99,999') from emp;
select ename,to_char(sal,'L99,999') from emp;
--to_number
select to_number('123')+to_number('123') from dual;
--to_date
select to_date('2010-12-31','yyyy-mm-dd') from dual;
--通用函数
select empno,ename ,(sal+comm)*12 from emp;
--nvl函数,可以将一个指定的null值变成指定的内容
--如果需要进行计算的时候,对于null必须使用nvl()函数进行一个转换的操作
select empno,ename,nvl(comm,0),(sal+nvl(comm,0))*12 from emp;
--decode()函数
select decode(1,1,'内容是1',2,'内容是2',3,'内容时3') from dual;
select empno 雇员编号,ename 雇员姓名,hiredate 雇佣日期,
decode( job,'CLERK','业务员','SALESMAN','销售人员','MANAGER','经理'
,'ANALYST','分析员','PRESIDENT','总裁') 职位 from emp;
--多表查询
select * from emp,dept;
select count(*) from emp;
select count(*) from dept;
select * from emp;
select * from dept;
select * from emp e ,dept d where e.deptno=d.deptno;
select e.empno,e.ename,d.deptno,d.dname,d.loc
from emp e ,dept d where e.deptno=d.deptno;
select e.ename,e.job,m.ename,d.dname
from emp e,emp m,dept d where e.mgr=m.empno and e.deptno=d.deptno;
select * from salgrade;
select e.ename,e.sal,d.dname,decode(s.grade,1,'第五等工资',2,'第四等工资',3,'第三等工资',4,'第二等工资',5,'第一等工资')
,m.ename,m.sal,decode(ms.grade,1,'第五等工资',2,'第四等工资',3,'第三等工资',4,'第二等工资',5,'第一等工资')
from emp e,dept d,salgrade s,emp m,salgrade ms
where e.deptno=d.deptno and e.sal between s.losal and s.hisal and e.mgr=m.empno
and m.sal between ms.losal and ms.hisal;
--左右连接
select e.empno,e.ename,d.deptno,d.dname,d.loc
--左连接,默认左连接
from emp e,dept d where e.deptno=d.deptno(+);
--右连接
select e.empno,e.ename,d.deptno,d.dname,d.loc
from emp e,dept d where e.deptno(+)=d.deptno;
--组函数和及分组统计
select min(sal) from emp;
select max(sal) from emp;
select sum(sal) from emp where deptno=20;
select avg(sal) from emp;
--分组统计
select deptno ,count(deptno) from emp
group by deptno;
select deptno ,avg(sal) from emp
group by deptno;
1.select deptno,count(deptno) from emp;
2.select deptno,count(deptno),empno from emp
group by deptno;
--以上代码不能正确执行,是因为:
--1, 如果程序中使用了分组函数,则有两种可以使用的情况:
-- :程序中存在了group by ,并指定了分组字段,这样可以将分组字段一起查询出来
-- :如果不使用分组的话,则只能单独的使用分组函数
--2. 在使用分组函数的时候,不能出现分组函数和分组字段之外的字段。
select d.dname,count(e.empno)
from dept d,emp e
where d.deptno=e.deptno
group by d.dname;
--分组函数不允许在where语句之中出现,如果假设要指定分组的条件,
--则只能通过第二种条件的指令:having
select e.deptno,avg(e.sal)
from emp e
group by e.deptno having avg(sal)>2000;
select max(avg(sal)) from emp
group by deptno;
--分组的简单原则
-- 只要一列上存在重复的内容才有可能考虑到分组
--注意
-- 分组函数可以嵌套使用,但是在组函数嵌套使用的时候不能再出现分组字段的查询语句
--子查询
select * from emp where sal>
(select sal from emp where empno=7654);
--所有的子查询必须在"()"中编写代码
--子查询操作分为以下三类:
--1.单列子查询,返回的结果是一列的一个内容
--2.单行子查询,返回多个列,有可能是一条完整的记录
--3.多行子查询,返回多条记录
select * from emp where sal>
(select sal from emp where empno=7654) and job=(select job from emp where empno=7788);
select * from emp where sal=(select min(sal) from emp);
select d.dname,ed.c,ed.a,e.ename
from dept d,
(select deptno ,count(empno) c,avg(sal) a,min(sal) min
from emp
group by deptno) ed,emp e
where
d.deptno=ed.deptno and e.sal=ed.min;
--在子查询中,存在以下三种查询的操作符号
--in any all
--in指定一个查询范围
select * from emp where sal in (select min(sal) from emp group by deptno);
--any操作: =any与in的操作符功能一样
select * from emp where sal =any (select min(sal) from emp group by deptno);
-->any,比里面的最小值要大
select * from emp where sal >any (select min(sal) from emp group by deptno);
--<any,比里面的最大值要小
select * from emp where sal <any (select min(sal) from emp group by deptno);
--all操作
-->all,比里面的最大值要大
select * from emp where sal >all (select min(sal) from emp group by deptno);
--<all,比里面的最小值要小
select * from emp where sal <all (select min(sal) from emp group by deptno);
--多列子查询
select * from emp where (sal,nvl(comm,-1)) in (select sal,nvl(comm,-1) from emp where deptno=20);
CREATE OR REPLACE PROCEDURE "STL_HB"."P_HB_NUMBER_18"
as
type cur_ref is ref cursor; --经分提供的数据
x_mycur cur_ref;
x_area_code varchar2(20); --经分提供的CITY_ID
x_region_id varchar2(20); --所属区域(营业区概念)
x_exchange_code varchar2(20); --经分-运营商标示
x_acc_nbr_begin varchar2(20); --局向开始号段
x_acc_nbr_end varchar2(20); --局向结束号段
x_reduce number(10); --结束号段-开始号段 之差
y_area_code varchar2(20); --新系统需要用到的CITY_ID
x_jh varchar2(20); --新系统用到的号码
x_num number(8); --
x_company_id varchar2(8); --新系统 运营商标示
y_call_area_id number(18); --新系统营业区概念
y_call_group number(18); --分组
z_call_group varchar2(18);
is_null number(4);
t_sequence number(4);
is_error number(4);
-----------------------------
i number(8);
b_nine varchar2(20);
e_nine varchar2(20);
z_begin varchar2(20);
z_end varchar2(20);
err_count number(4);
ctrol_num number(4);
begin
SELECT COUNT(*) into t_sequence
FROM DBA_OBJECTS A
WHERE A.OWNER = 'STL_HB'
AND A.OBJECT_TYPE = 'SEQUENCE'
AND A.OBJECT_NAME = 'SEQ_CALL_NUMBER_MEM_18';
if(t_sequence = 1 ) then
execute immediate 'DROP SEQUENCE SEQ_CALL_NUMBER_MEM_18';
execute immediate 'CREATE SEQUENCE SEQ_CALL_NUMBER_MEM_18
START WITH 180000000
INCREMENT BY 1' ;
else
execute immediate 'CREATE SEQUENCE SEQ_CALL_NUMBER_MEM_18
START WITH 180000000
INCREMENT BY 1' ;
end if;
execute immediate 'TRUNCATE TABLE STL_HB.T_CALL_GROUP_MEM_HB_18';
DELETE FROM STL_HB.T_CALL_GROUP_MEM_LOAD_ERR_18 A
WHERE SUBSTR(TO_CHAR(A.INSERT_TIME,'YYYYMMDD'),1,8) = SUBSTR(TO_CHAR(SYSDATE,'YYYYMMDD'),1,8);
COMMIT;
select count(*) into is_error from t_call_group_mem_load_18 a where a.exchange_code not in('100','200','300','500','600')
or length(a.acc_nbr_begin) = 0 or a.acc_nbr_begin is null or a.acc_nbr_end is null or substr(a.area_code,2,3) || '0'
not in (3100,3110,3120,3130,3140,3150,3160,3170,3180,3190,3350,100) or a.region_id_2 is null;
if( is_error <> 0 ) then
insert into T_CALL_GROUP_MEM_LOAD_ERR_18
select a.*,3,'load表中有字段为空',sysdate,SUBSTR(TO_CHAR(SYSDATE,'YYYYMMDD'),5,2) from t_call_group_mem_load_18 a
where a.exchange_code not in('100','200','300','500','600')
or length(a.acc_nbr_begin) = 0 or a.acc_nbr_begin is null or a.acc_nbr_end is null or substr(a.area_code,2,3) || '0'
not in (3100,3110,3120,3130,3140,3150,3160,3170,3180,3190,3350,100) or a.region_id_2 is null;
commit;
end if;
open x_mycur for select area_code, region_id_2, acc_nbr_begin, acc_nbr_end, exchange_code from T_CALL_GROUP_MEM_LOAD_18 A WHERE
translate(trim(A.Acc_Nbr_Begin),'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') = trim(A.Acc_Nbr_Begin)
/*and a.acc_nbr_begin in('999670')*//*and rownum < 100*/;
loop
fetch x_mycur into x_area_code,x_region_id,x_acc_nbr_begin,x_acc_nbr_end,x_exchange_code ;
if ( x_area_code = 010 ) then
y_area_code := 3160 ;
else
y_area_code := substr(x_area_code,2,3)||'0';
end if;
x_reduce := to_number(x_acc_nbr_end) - to_number(x_acc_nbr_begin);
if(x_exchange_code = 100) then
x_company_id := '9001';
z_call_group := '184011001';
end if;
if(x_exchange_code = 200) then
x_company_id := '9005';
z_call_group := '181011001';
end if;
if(x_exchange_code = 300) then
x_company_id := '9004';
z_call_group := '185011001';
end if;
if(x_exchange_code = 500) then
x_company_id := '9002';
end if;
if(x_exchange_code = 600) then
x_company_id := '9003';
end if;
SELECT COUNT(*) INTO IS_NULL
FROM T_CALL_GROUP_MEM_REF_18 A WHERE A.O_AREA_CODE = x_region_id AND A.COMPANY_ID = x_company_id AND A.CITY_ID = y_area_code;
if(IS_NULL = 0) then
insert into T_CALL_GROUP_MEM_LOAD_ERR_18 values(
x_area_code,x_region_id,x_acc_nbr_begin,x_acc_nbr_end,x_exchange_code,
1,'关联表中无此信息',sysdate,SUBSTR(TO_CHAR(SYSDATE,'YYYYMMDD'),5,2)
);
end if;
if(IS_NULL > 1) then
insert into T_CALL_GROUP_MEM_LOAD_ERR_18 values(
x_area_code,x_region_id,x_acc_nbr_begin,x_acc_nbr_end,x_exchange_code,
1,'关联字段错误',sysdate,SUBSTR(TO_CHAR(SYSDATE,'YYYYMMDD'),5,2)
);
end if;
IF(IS_NULL = 1) THEN --3
SELECT nvl(A.N_AREA_CODE,0),nvl(A.CALL_GROUP_ID,0) into y_call_area_id,y_call_group
FROM T_CALL_GROUP_MEM_REF_18 A WHERE A.O_AREA_CODE = x_region_id AND A.COMPANY_ID = x_company_id AND A.CITY_ID = y_area_code;
i := 0;
if( length(trim(x_acc_nbr_end)) <> length( trim(x_acc_nbr_begin)) ) then
--dbms_output.put_line(x_acc_nbr_begin||'+++'||length( trim(x_acc_nbr_begin))||'--&--'||x_acc_nbr_end||'--'||length(trim(x_acc_nbr_end)));
insert into T_CALL_GROUP_MEM_LOAD_ERR_18 values(
x_area_code,x_region_id,x_acc_nbr_begin,x_acc_nbr_end,x_exchange_code,
1,'结束号段于开始号段长度不一致错误',sysdate,SUBSTR(TO_CHAR(SYSDATE,'YYYYMMDD'),5,2)
);
end if;
if( length(x_acc_nbr_end) = length(x_acc_nbr_begin) ) then --2
b_nine := substr(x_acc_nbr_begin,length(x_acc_nbr_begin) - i ,1);
e_nine := substr(x_acc_nbr_end,length(x_acc_nbr_end) - i ,1);
while(b_nine = '0' and e_nine = '9' ) loop
i := i + 1;
b_nine := substr(x_acc_nbr_begin,length(x_acc_nbr_begin) - i ,1);
e_nine := substr(x_acc_nbr_end,length(x_acc_nbr_end) - i ,1);
end loop;
z_begin := substr(x_acc_nbr_begin,1,length(x_acc_nbr_begin) - i );
z_end := substr(x_acc_nbr_end,1,length(x_acc_nbr_end) - i );
x_num := z_end - z_begin;
if(x_num = 0) then --1
x_jh := z_begin;
DELETE FROM T_CALL_GROUP_MEM_HB_18 A
WHERE A.CALL_NUMBER = x_jh AND A.CITY_ID = y_area_code AND
A.CALL_AREA_ID = y_call_area_id AND A.COMPANY_ID =x_company_id;
COMMIT;
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'Z'||z_call_group,y_area_code,'100',to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'B'||z_call_group,y_area_code,'100',to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'Z'||y_call_group,y_area_code,y_call_area_id,to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'B'||y_call_group,y_area_code,y_call_area_id,to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
COMMIT;
else
while(x_num >= 0) loop ----
x_jh := z_begin ;
z_begin := z_begin + 1;
x_num := x_num -1;
DELETE FROM T_CALL_GROUP_MEM_HB_18 A
WHERE A.CALL_NUMBER = x_jh AND A.CITY_ID = y_area_code AND
A.CALL_AREA_ID = y_call_area_id AND A.COMPANY_ID =x_company_id;
COMMIT;
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'Z'||z_call_group,y_area_code,'100',to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'B'||z_call_group,y_area_code,'100',to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'Z'||y_call_group,y_area_code,y_call_area_id,to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'B'||y_call_group,y_area_code,y_call_area_id,to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
COMMIT;
-- end loop;
IF(x_num < 0) then
i := 0;
exit;
end if;
end loop;
end if; --1
end if; --2
end if; --3
exit when x_mycur%notfound;
end loop;
select count(*) into err_count from T_CALL_GROUP_MEM_LOAD_ERR_18 a
where to_char(a.insert_time,'YYYYMMDD') = to_char(sysdate,'YYYYMMDD');
select count(*) into ctrol_num from t_call_group_mem_comtrol_18 a where a.t_date = to_char(sysdate,'YYYYMMDD');
if(err_count > 3 )then
if(ctrol_num = 0) then
insert into stl_hb.t_call_group_mem_comtrol_18
(t_comtrol_id, t_date, t_state)
values
(SEQ_CALL_NUMBER_COMTROL_18.Nextval, to_char(sysdate,'YYYYMMDD'), '1');
commit;
else
update stl_hb.t_call_group_mem_comtrol_18 a set a.t_state = 1 where a.t_date = to_char(sysdate,'YYYYMMDD');
end if;
end if;
if(err_count <= 3) then
if( ctrol_num = 0 ) then
insert into stl_hb.t_call_group_mem_comtrol_18
(t_comtrol_id, t_date, t_state)
values
(SEQ_CALL_NUMBER_COMTROL_18.Nextval, to_char(sysdate,'YYYYMMDD'), '0');
commit;
else
update stl_hb.t_call_group_mem_comtrol_18 a set a.t_state = 0 where a.t_date = to_char(sysdate,'YYYYMMDD');
end if;
end if;
--end if;
end p_hb_number_18;
/
select substr('hello',1,3) 字符串截取,
length('hello') 字符串长度,
replace('hello','o','l') 字符串替换
from dual;
--显示所有雇员姓名和姓名后的三个字符
select ename ,substr(ename,length(ename)-2) from emp;
--substr()函数可以采用倒着截取的方式,只要输入的位置是负数,就可以倒着进行
select ename ,substr(ename,-3,3) from emp;
--2.数值函数
--四舍五入:round();截断小数位trunc();取模mod()
select round(789.536) from dual;
--保留两位小数
--保留两位小数
select round(789.536,2) from dual;
--直接对整数进行四舍五入
select round(789.536,-2) from dual;
--trunc不保留小数,也不进行四舍五入
select trunc(789.536) from dual;
select trunc(789.536,2) from dual;
select trunc(789.536,-2) from dual;
--去模
select mod(10,3) from dual;
--显示雇员进入公司的星期数
select sysdate from dual;
select empno,ename,round((sysdate-hiredate)/7) from emp;
--months_between():求出给定日期范围的月数
--add_months():在指定日期上加上指定月数,求出之后的日期
--next_day():下一个的今天是那一个日期
--last_day():求出给定日期的最后一天日期
select empno,ename, months_between (sysdate,hiredate) from emp;
select add_months(sysdate,4) from dual;
select next_day(sysdate,'星期一') from dual;
select last_day(sysdate) from dual;
--4.转换函数
--to_char:转换成字符串;
--to_number:转换成数字;
--to_date:转换成日期
--利用to_char()函数进行拆分,拆分的时候必须指定拆分的通配符:
--年:y,年是四位数字,所以用yyyy表示
--月:m,月是两位数字,所以使用mm表示
--日:d,日是两位数字,所以使用dd表示
select empno,ename,to_char(hiredate,'yyyy') year,
to_char(hiredate,'mm') month,to_char(hiredate,'dd') day
from emp;
--使用to_char()进行日期显示的转换功能
select ename, to_char(hiredate,'yyyy-mm-dd') from emp;
--fm可以去掉前导0
select ename, to_char(hiredate,'fmyyyy-mm-dd') from emp;
--可以使用to_char()进行数字格式化
select ename,to_char(sal,'99,999') from emp;
--希望数字可以明确的表示区域,可以使用以下两种符号:
--$ 表示美元;L Local的缩写,一本地语言进行金额显示
select ename,to_char(sal,'$99,999') from emp;
select ename,to_char(sal,'L99,999') from emp;
--to_number
select to_number('123')+to_number('123') from dual;
--to_date
select to_date('2010-12-31','yyyy-mm-dd') from dual;
--通用函数
select empno,ename ,(sal+comm)*12 from emp;
--nvl函数,可以将一个指定的null值变成指定的内容
--如果需要进行计算的时候,对于null必须使用nvl()函数进行一个转换的操作
select empno,ename,nvl(comm,0),(sal+nvl(comm,0))*12 from emp;
--decode()函数
select decode(1,1,'内容是1',2,'内容是2',3,'内容时3') from dual;
select empno 雇员编号,ename 雇员姓名,hiredate 雇佣日期,
decode( job,'CLERK','业务员','SALESMAN','销售人员','MANAGER','经理'
,'ANALYST','分析员','PRESIDENT','总裁') 职位 from emp;
--多表查询
select * from emp,dept;
select count(*) from emp;
select count(*) from dept;
select * from emp;
select * from dept;
select * from emp e ,dept d where e.deptno=d.deptno;
select e.empno,e.ename,d.deptno,d.dname,d.loc
from emp e ,dept d where e.deptno=d.deptno;
select e.ename,e.job,m.ename,d.dname
from emp e,emp m,dept d where e.mgr=m.empno and e.deptno=d.deptno;
select * from salgrade;
select e.ename,e.sal,d.dname,decode(s.grade,1,'第五等工资',2,'第四等工资',3,'第三等工资',4,'第二等工资',5,'第一等工资')
,m.ename,m.sal,decode(ms.grade,1,'第五等工资',2,'第四等工资',3,'第三等工资',4,'第二等工资',5,'第一等工资')
from emp e,dept d,salgrade s,emp m,salgrade ms
where e.deptno=d.deptno and e.sal between s.losal and s.hisal and e.mgr=m.empno
and m.sal between ms.losal and ms.hisal;
--左右连接
select e.empno,e.ename,d.deptno,d.dname,d.loc
--左连接,默认左连接
from emp e,dept d where e.deptno=d.deptno(+);
--右连接
select e.empno,e.ename,d.deptno,d.dname,d.loc
from emp e,dept d where e.deptno(+)=d.deptno;
--组函数和及分组统计
select min(sal) from emp;
select max(sal) from emp;
select sum(sal) from emp where deptno=20;
select avg(sal) from emp;
--分组统计
select deptno ,count(deptno) from emp
group by deptno;
select deptno ,avg(sal) from emp
group by deptno;
1.select deptno,count(deptno) from emp;
2.select deptno,count(deptno),empno from emp
group by deptno;
--以上代码不能正确执行,是因为:
--1, 如果程序中使用了分组函数,则有两种可以使用的情况:
-- :程序中存在了group by ,并指定了分组字段,这样可以将分组字段一起查询出来
-- :如果不使用分组的话,则只能单独的使用分组函数
--2. 在使用分组函数的时候,不能出现分组函数和分组字段之外的字段。
select d.dname,count(e.empno)
from dept d,emp e
where d.deptno=e.deptno
group by d.dname;
--分组函数不允许在where语句之中出现,如果假设要指定分组的条件,
--则只能通过第二种条件的指令:having
select e.deptno,avg(e.sal)
from emp e
group by e.deptno having avg(sal)>2000;
select max(avg(sal)) from emp
group by deptno;
--分组的简单原则
-- 只要一列上存在重复的内容才有可能考虑到分组
--注意
-- 分组函数可以嵌套使用,但是在组函数嵌套使用的时候不能再出现分组字段的查询语句
--子查询
select * from emp where sal>
(select sal from emp where empno=7654);
--所有的子查询必须在"()"中编写代码
--子查询操作分为以下三类:
--1.单列子查询,返回的结果是一列的一个内容
--2.单行子查询,返回多个列,有可能是一条完整的记录
--3.多行子查询,返回多条记录
select * from emp where sal>
(select sal from emp where empno=7654) and job=(select job from emp where empno=7788);
select * from emp where sal=(select min(sal) from emp);
select d.dname,ed.c,ed.a,e.ename
from dept d,
(select deptno ,count(empno) c,avg(sal) a,min(sal) min
from emp
group by deptno) ed,emp e
where
d.deptno=ed.deptno and e.sal=ed.min;
--在子查询中,存在以下三种查询的操作符号
--in any all
--in指定一个查询范围
select * from emp where sal in (select min(sal) from emp group by deptno);
--any操作: =any与in的操作符功能一样
select * from emp where sal =any (select min(sal) from emp group by deptno);
-->any,比里面的最小值要大
select * from emp where sal >any (select min(sal) from emp group by deptno);
--<any,比里面的最大值要小
select * from emp where sal <any (select min(sal) from emp group by deptno);
--all操作
-->all,比里面的最大值要大
select * from emp where sal >all (select min(sal) from emp group by deptno);
--<all,比里面的最小值要小
select * from emp where sal <all (select min(sal) from emp group by deptno);
--多列子查询
select * from emp where (sal,nvl(comm,-1)) in (select sal,nvl(comm,-1) from emp where deptno=20);
CREATE OR REPLACE PROCEDURE "STL_HB"."P_HB_NUMBER_18"
as
type cur_ref is ref cursor; --经分提供的数据
x_mycur cur_ref;
x_area_code varchar2(20); --经分提供的CITY_ID
x_region_id varchar2(20); --所属区域(营业区概念)
x_exchange_code varchar2(20); --经分-运营商标示
x_acc_nbr_begin varchar2(20); --局向开始号段
x_acc_nbr_end varchar2(20); --局向结束号段
x_reduce number(10); --结束号段-开始号段 之差
y_area_code varchar2(20); --新系统需要用到的CITY_ID
x_jh varchar2(20); --新系统用到的号码
x_num number(8); --
x_company_id varchar2(8); --新系统 运营商标示
y_call_area_id number(18); --新系统营业区概念
y_call_group number(18); --分组
z_call_group varchar2(18);
is_null number(4);
t_sequence number(4);
is_error number(4);
-----------------------------
i number(8);
b_nine varchar2(20);
e_nine varchar2(20);
z_begin varchar2(20);
z_end varchar2(20);
err_count number(4);
ctrol_num number(4);
begin
SELECT COUNT(*) into t_sequence
FROM DBA_OBJECTS A
WHERE A.OWNER = 'STL_HB'
AND A.OBJECT_TYPE = 'SEQUENCE'
AND A.OBJECT_NAME = 'SEQ_CALL_NUMBER_MEM_18';
if(t_sequence = 1 ) then
execute immediate 'DROP SEQUENCE SEQ_CALL_NUMBER_MEM_18';
execute immediate 'CREATE SEQUENCE SEQ_CALL_NUMBER_MEM_18
START WITH 180000000
INCREMENT BY 1' ;
else
execute immediate 'CREATE SEQUENCE SEQ_CALL_NUMBER_MEM_18
START WITH 180000000
INCREMENT BY 1' ;
end if;
execute immediate 'TRUNCATE TABLE STL_HB.T_CALL_GROUP_MEM_HB_18';
DELETE FROM STL_HB.T_CALL_GROUP_MEM_LOAD_ERR_18 A
WHERE SUBSTR(TO_CHAR(A.INSERT_TIME,'YYYYMMDD'),1,8) = SUBSTR(TO_CHAR(SYSDATE,'YYYYMMDD'),1,8);
COMMIT;
select count(*) into is_error from t_call_group_mem_load_18 a where a.exchange_code not in('100','200','300','500','600')
or length(a.acc_nbr_begin) = 0 or a.acc_nbr_begin is null or a.acc_nbr_end is null or substr(a.area_code,2,3) || '0'
not in (3100,3110,3120,3130,3140,3150,3160,3170,3180,3190,3350,100) or a.region_id_2 is null;
if( is_error <> 0 ) then
insert into T_CALL_GROUP_MEM_LOAD_ERR_18
select a.*,3,'load表中有字段为空',sysdate,SUBSTR(TO_CHAR(SYSDATE,'YYYYMMDD'),5,2) from t_call_group_mem_load_18 a
where a.exchange_code not in('100','200','300','500','600')
or length(a.acc_nbr_begin) = 0 or a.acc_nbr_begin is null or a.acc_nbr_end is null or substr(a.area_code,2,3) || '0'
not in (3100,3110,3120,3130,3140,3150,3160,3170,3180,3190,3350,100) or a.region_id_2 is null;
commit;
end if;
open x_mycur for select area_code, region_id_2, acc_nbr_begin, acc_nbr_end, exchange_code from T_CALL_GROUP_MEM_LOAD_18 A WHERE
translate(trim(A.Acc_Nbr_Begin),'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') = trim(A.Acc_Nbr_Begin)
/*and a.acc_nbr_begin in('999670')*//*and rownum < 100*/;
loop
fetch x_mycur into x_area_code,x_region_id,x_acc_nbr_begin,x_acc_nbr_end,x_exchange_code ;
if ( x_area_code = 010 ) then
y_area_code := 3160 ;
else
y_area_code := substr(x_area_code,2,3)||'0';
end if;
x_reduce := to_number(x_acc_nbr_end) - to_number(x_acc_nbr_begin);
if(x_exchange_code = 100) then
x_company_id := '9001';
z_call_group := '184011001';
end if;
if(x_exchange_code = 200) then
x_company_id := '9005';
z_call_group := '181011001';
end if;
if(x_exchange_code = 300) then
x_company_id := '9004';
z_call_group := '185011001';
end if;
if(x_exchange_code = 500) then
x_company_id := '9002';
end if;
if(x_exchange_code = 600) then
x_company_id := '9003';
end if;
SELECT COUNT(*) INTO IS_NULL
FROM T_CALL_GROUP_MEM_REF_18 A WHERE A.O_AREA_CODE = x_region_id AND A.COMPANY_ID = x_company_id AND A.CITY_ID = y_area_code;
if(IS_NULL = 0) then
insert into T_CALL_GROUP_MEM_LOAD_ERR_18 values(
x_area_code,x_region_id,x_acc_nbr_begin,x_acc_nbr_end,x_exchange_code,
1,'关联表中无此信息',sysdate,SUBSTR(TO_CHAR(SYSDATE,'YYYYMMDD'),5,2)
);
end if;
if(IS_NULL > 1) then
insert into T_CALL_GROUP_MEM_LOAD_ERR_18 values(
x_area_code,x_region_id,x_acc_nbr_begin,x_acc_nbr_end,x_exchange_code,
1,'关联字段错误',sysdate,SUBSTR(TO_CHAR(SYSDATE,'YYYYMMDD'),5,2)
);
end if;
IF(IS_NULL = 1) THEN --3
SELECT nvl(A.N_AREA_CODE,0),nvl(A.CALL_GROUP_ID,0) into y_call_area_id,y_call_group
FROM T_CALL_GROUP_MEM_REF_18 A WHERE A.O_AREA_CODE = x_region_id AND A.COMPANY_ID = x_company_id AND A.CITY_ID = y_area_code;
i := 0;
if( length(trim(x_acc_nbr_end)) <> length( trim(x_acc_nbr_begin)) ) then
--dbms_output.put_line(x_acc_nbr_begin||'+++'||length( trim(x_acc_nbr_begin))||'--&--'||x_acc_nbr_end||'--'||length(trim(x_acc_nbr_end)));
insert into T_CALL_GROUP_MEM_LOAD_ERR_18 values(
x_area_code,x_region_id,x_acc_nbr_begin,x_acc_nbr_end,x_exchange_code,
1,'结束号段于开始号段长度不一致错误',sysdate,SUBSTR(TO_CHAR(SYSDATE,'YYYYMMDD'),5,2)
);
end if;
if( length(x_acc_nbr_end) = length(x_acc_nbr_begin) ) then --2
b_nine := substr(x_acc_nbr_begin,length(x_acc_nbr_begin) - i ,1);
e_nine := substr(x_acc_nbr_end,length(x_acc_nbr_end) - i ,1);
while(b_nine = '0' and e_nine = '9' ) loop
i := i + 1;
b_nine := substr(x_acc_nbr_begin,length(x_acc_nbr_begin) - i ,1);
e_nine := substr(x_acc_nbr_end,length(x_acc_nbr_end) - i ,1);
end loop;
z_begin := substr(x_acc_nbr_begin,1,length(x_acc_nbr_begin) - i );
z_end := substr(x_acc_nbr_end,1,length(x_acc_nbr_end) - i );
x_num := z_end - z_begin;
if(x_num = 0) then --1
x_jh := z_begin;
DELETE FROM T_CALL_GROUP_MEM_HB_18 A
WHERE A.CALL_NUMBER = x_jh AND A.CITY_ID = y_area_code AND
A.CALL_AREA_ID = y_call_area_id AND A.COMPANY_ID =x_company_id;
COMMIT;
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'Z'||z_call_group,y_area_code,'100',to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'B'||z_call_group,y_area_code,'100',to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'Z'||y_call_group,y_area_code,y_call_area_id,to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'B'||y_call_group,y_area_code,y_call_area_id,to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
COMMIT;
else
while(x_num >= 0) loop ----
x_jh := z_begin ;
z_begin := z_begin + 1;
x_num := x_num -1;
DELETE FROM T_CALL_GROUP_MEM_HB_18 A
WHERE A.CALL_NUMBER = x_jh AND A.CITY_ID = y_area_code AND
A.CALL_AREA_ID = y_call_area_id AND A.COMPANY_ID =x_company_id;
COMMIT;
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'Z'||z_call_group,y_area_code,'100',to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'B'||z_call_group,y_area_code,'100',to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'Z'||y_call_group,y_area_code,y_call_area_id,to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
insert into T_CALL_GROUP_MEM_HB_18 values
(x_jh,'B'||y_call_group,y_area_code,y_call_area_id,to_date('20090101','YYYY-MM-DD'),to_date('20500101','YYYY-MM-DD'),'2',to_date('20101001','YYYY-MM-DD'),x_company_id,'18','',SEQ_CALL_NUMBER_MEM_18.NEXTVAL,'','','1','','');
COMMIT;
-- end loop;
IF(x_num < 0) then
i := 0;
exit;
end if;
end loop;
end if; --1
end if; --2
end if; --3
exit when x_mycur%notfound;
end loop;
select count(*) into err_count from T_CALL_GROUP_MEM_LOAD_ERR_18 a
where to_char(a.insert_time,'YYYYMMDD') = to_char(sysdate,'YYYYMMDD');
select count(*) into ctrol_num from t_call_group_mem_comtrol_18 a where a.t_date = to_char(sysdate,'YYYYMMDD');
if(err_count > 3 )then
if(ctrol_num = 0) then
insert into stl_hb.t_call_group_mem_comtrol_18
(t_comtrol_id, t_date, t_state)
values
(SEQ_CALL_NUMBER_COMTROL_18.Nextval, to_char(sysdate,'YYYYMMDD'), '1');
commit;
else
update stl_hb.t_call_group_mem_comtrol_18 a set a.t_state = 1 where a.t_date = to_char(sysdate,'YYYYMMDD');
end if;
end if;
if(err_count <= 3) then
if( ctrol_num = 0 ) then
insert into stl_hb.t_call_group_mem_comtrol_18
(t_comtrol_id, t_date, t_state)
values
(SEQ_CALL_NUMBER_COMTROL_18.Nextval, to_char(sysdate,'YYYYMMDD'), '0');
commit;
else
update stl_hb.t_call_group_mem_comtrol_18 a set a.t_state = 0 where a.t_date = to_char(sysdate,'YYYYMMDD');
end if;
end if;
--end if;
end p_hb_number_18;
/
发表评论
-
sqlserver identity总结
2016-05-09 15:26 885想要将值插入到自动编 ... -
mysql 转sqlserver中遇到的坑
2016-05-06 18:09 1300mysql 转sqlserver中遇到的 ... -
sqlserver 函数cast与拼接
2016-05-04 12:01 936今天项目用到sqlserver,已经有8年不用这个sqlser ... -
mysql更新
2016-01-26 17:25 370UPDATE souyue02.sy_category_inf ... -
SELECT INTO 和 INSERT INTO SELECT
2015-10-09 16:51 445http://www.cnblogs.com/freshman ... -
mysql --------for routine错
2015-09-09 19:19 684调用存储过程时报了下面的错误 ERROR 1370 (4200 ... -
mysql存储--游标
2015-09-09 18:21 443游标的使用 要声明, 1.接收游标数据的变量 2.遍历数据结 ... -
You can't specify target table 't' for update in FROM clause
2015-09-08 16:41 391You can't specify target table ... -
mysql中如何判断字段是否包含中文
2015-09-08 16:31 2568SELECT * FROM a WHERE length( ... -
MSSQL和MySQL中,数据表两列字段值互换的问题,记录下
2015-09-08 16:29 1649MSSQL的处理方法 update table1 set fi ... -
Mongodb的update操作
2015-04-04 11:56 5511).update()命令 db.collection.up ... -
从Mongo的一些总结
2015-03-26 17:40 322var timestamp = _id.toString(). ... -
mysql加密解密函数AES_ENCRYPT与AES_DECRYPT
2014-12-02 15:05 2673mysql下的加密函数有如下几个 PASSWORD():创建 ... -
mysql加密解密函数AES_ENCRYPT与AES_DECRYPT
2014-12-02 15:04 1173mysql下的加密函数有如下几个 PASSWORD():创建 ... -
Mysql 查看连接数,状态
2014-11-27 17:24 1119http://blog.csdn.net/starnight_ ... -
sqlserver2008 jar驱动
2014-11-10 13:31 745JAVA要连接SQL SERVER2008,必须要用JDBC驱 ... -
mysql语句学习
2014-11-06 17:34 532select sysdate(),now(), sleep(3 ... -
win8不允许从远程连接MySql解决办法
2014-11-06 11:22 664在安装mysql的机器上运 ... -
plsql写表中字段及注释时为乱码
2014-09-01 11:55 2192修改pl/sql developer 的编码格式: 在win ... -
在Oracle中调用java程序
2014-07-16 13:46 617注意:java方法必须是static类型的,如果想在JAVA中 ...
相关推荐
oracle 中的SQL语言基础 oracle 中的SQL语言基础
**Oracle数据库SQL基础** 在IT领域,Oracle数据库是全球广泛使用的数据库管理系统之一,而SQL(结构化查询语言)则是与数据库交互的基础工具。本篇将深入讲解Oracle SQL的基础知识,包括基本的SQL语句、单行函数、...
第三章 ORACLE SQL 单行函数 第四章 从多表中查询数据 第五章 用组函数合计数据 第六章 子查询 第七章 操纵数据 第八章 创建和管理表 第九章 内置约束 第十章 创建视图 第十一章 其他数据库对象 第十二章 控制用户...
本资源“Oracle Sql基础(beginning oracle sql中文版)”旨在为初学者提供一个全面的Oracle SQL学习指南。让我们深入探讨Oracle SQL的基础知识。 一、SQL简介 SQL(结构化查询语言)是用于管理关系数据库的标准...
在"Oracle&Sql基础(ppt)"中,我们可能涵盖以下几个主题: 1. **数据库基础知识**:介绍数据库的基本概念,如关系模型、实体与关系,以及数据库设计的范式理论,如第一范式(1NF)、第二范式(2NF)和第三范式(3NF...
2. **SQL基础语法**:SQL主要包括DQL(Data Query Language)用于查询数据,DDL(Data Definition Language)用于定义数据库对象,DML(Data Manipulation Language)用于操纵数据,以及TCL(Transaction Control ...
Oracle Database 11g:SQL 基础I 学生指南第1 册 学完本课后,应能完成下列工作: • 阐述本课程的目标 • 列出Oracle Database 11g 的功能 • 从理论和实际实施两方面讨论关系数据库 • 描述RDBMS 和对象关系数据库...
PL/SQL(Procedure Language/Structuer Query Language)是Oracle对标准SQL规范的扩展,全面支持SQL的数据操作、事务控制等。PL/SQL完全支持SQL数据类型,减少了在应用程序和数据库之间转换数据的操作。
oracle、sql语句基础
Oracle 10g SQL基础培训是数据库管理员和开发人员学习SQL语言的重要课程,特别是对于那些在企业级环境中处理数据的人员。Oracle 10g是Oracle数据库的一个版本,它提供了强大的功能和性能优化,使得SQL查询更为高效。...
Oracle_SQL_实用基础教程
oracle sql function
本书全面涵盖了从基础到高级的Oracle SQL知识,旨在帮助读者熟练掌握在Oracle环境中进行数据查询、操作、分析以及程序开发的各种技巧。 在Oracle数据库系统中,SQL(Structured Query Language)是用于管理关系...
下面我们将详细介绍 ORACLE SQL 性能优化系列中的一些重要知识点。 一、访问表的方式 ORACLE 采用两种访问表中记录的方式:全表扫描和通过 ROWID 访问表。 1. 全表扫描 全表扫描就是顺序地访问表中每条记录。...
Oracle_SQL基础到存储过程(第一阶段) 001.sql基础查询_条件取数.mp4 002.sql基础查询_建表注释001.mp4 003.sql基础查询_增删改001.mp4 004.sql基础查询_分组聚合过滤001.mp4 005.sql基础查询_排序 .mp4 006.sql基础...
通过这些练习,你可以逐步掌握Oracle SQL的基本操作,提高在实际工作中处理数据的能力。同时,附带的答案将帮助你检查自己的理解和解答是否正确,进一步巩固学习成果。不断实践和理解,是成为Oracle SQL高手的关键...
Oracle SQL,全称为结构化查询语言在Oracle数据库环境中的应用,是数据库管理员和开发人员用于检索、更新和管理Oracle数据库的核心工具。Oracle SQL是SQL标准的扩展,它提供了许多特有的功能,以满足企业级数据库...
PL SQL基础知识讲解,方便更多初学者了解,掌握PLSQL的基础知识
Oracle SQL是数据库管理领域中的重要组成部分,特别是在Oracle数据库系统中,它是进行数据操作和分析的主要语言。本压缩包“oracle-sql.rar_oracle”显然针对的是Oracle SQL的学习资源,特别是对于初学者而言,它...
数据库开发 Oracle数据库 SQL开发教程 第01章 Oracle数据库基础(共60页).pdf 数据库开发 Oracle数据库 SQL开发教程 第02章 编写简单的查询语句(共34页).pdf 数据库开发 Oracle数据库 SQL开发教程 第03章 限制...