-- 日期格式条件
select *
from abc
where to_date('20111111', 'yyyymmdd') <= to_date(d, 'yyyymmdd')
and to_date('20111115', 'yyyymmdd') >= to_date(d, 'yyyymmdd')
--只能通过主键关联,才能更新
UPDATE (SELECT fund.Paymenttime paytime,
fund.paystatus sta,
detail.Operatortime opertime,
detail.pay_result_flag resflag
FROM T_PRPJFUNDSPAYMENTDETAIL fund,
T_RS_PAY_DETAIL detail
WHERE fund.PAYDETAILSEQID = detail.SEQ_ID
and pay_result_flag = '0'
and fund.paystatus in ('4', '5'))
SET resflag = decode(sta, '4', '1', '5', '2', '0'),
opertime = paytime
-- 加入参数后 可以避开主键关联的限制
"UPDATE (SELECT /*+BYPASS_UJVC*/ " +
"fund.Paymenttime paytime,fund.paystatus sta, fund.PAYACCOUNT acc, " +
"fund.PAYACCOUNTNAME nm,fund.PAYBANKLOCATION bkloca," +
"detail.OPERATOR_TIME opertime,detail.pay_result_flag resflag," +
"detail.RS_ACCCOUNT,detail.RS_USER_NM,detail.RS_BANK_NM " +
"FROM T_PRPJFUNDSPAYMENTDETAIL fund, T_RS_PAY_DETAIL detail " +
"WHERE fund.CERTINO = detail.GROUP_ID and pay_result_flag = '0' " +
"and fund.paystatus in ('4', '5'))" +
"SET resflag = decode(sta, '4', '1', '5', '2', '0'),opertime = paytime," +
"RS_ACCCOUNT = acc,RS_USER_NM = nm,RS_BANK_NM = bkloca"
--
select PAYDETAILSEQID, PAYSTATUS,PAYMENTTIME
from T_PRPJFUNDSPAYMENTDETAIL fund
where exists (select 1
from T_RS_PAY_DETAIL pay
where pay.seq_id = fund.PAYDETAILSEQID
and pay.pay_result_flag='0'
and fund.paystatus in('4','5')
);
--- 内外连接
select * from bcd vv inner join abc uu on vv.a=uu.a --内连接,或者叫等值连接
select * from bcd vv left join abc uu on vv.a = uu.a --左连接,显示左边所有的记录
--
select * from abc; --8 9 1 2 888
select * from bcd; --7 9 8
--查询出 bcd 表中 7 的记录
select * from bcd bb where not exists (select 1 from abc aa where aa.a = bb.a );
select substr(a,0,3) from abc where a='888'--包括begin,不包括end
insert into t_accounthis select * from t_account
--删除表多余的列
alter table T_ACCOUNTING_PERIOD drop (acc_sta);
alter table t_note_info add (ACCOUNTING_DATE varchar2(8));
create sequence S_INEX_INFO_SEQ_ID increment by 1 nocache;
select note.note_seq_id,note.costcenter from T_NOTE_INFO note where note.comcode='34010100';--票据基本信息表(NOTE_SEQ_ID主键)
select * from T_VERIF_TRACE;--票据使用明细表(VERIF_NO主键,核销流水号 ,采用的是新建序列发生器的方式)
select * from T_NOTE_INFO note where note.note_seq_id='159'for update ;--主键采用的是sequence,是数据库的方式
select * from T_NOTE_INFO note where (amount-nvl(useamt,'0'))>0;--通过票据单号可进行关联
-- 创建导出数据需要的用户和权限设置
create user zengst identified by zengst;
grant connect,resource,dba to zengst;
--创建序列
create sequence Seq_FundsPayment
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;
create sequence batchIds
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;
select batchId.Nextval from dual;
select batchId.Currval from dual
-- 更新视图信息
update (select * from abc where c=7 ) set c=2
--rownum不用用于表示大于等于的形式
alter table T_PRPJFUNDSPAYMENTDETAIL add (requestBatch varchar2(30));
-- 日期格式 到秒
delete from t_accounthis where to_date(process_date_2,'yyyyMMddHH24miss')>=to_date('20111128003003','yyyyMMddHH24miss')
and to_date(process_date_2,'yyyyMMddHH24miss')<=to_date('20111128173003','yyyyMMddHH24miss')
-- 先根据where条件帅选数据,然后对满足条件的数据按照创建时间筛选
select * from t_middle_task where actionFlag = 'A' and MODULE_ID = 'MOD001' order by tcrttm
-- rownum也是和其他条件一样,进行数据帅选的
-- group by 和forupdate不能一起使用
-- rownum=1,但是不能使用rownum=3或者大于1的数,也不能这样用:rownum>8,只能这样用:rownum<=3
--查询一个表的索引
select * from all_indexes where table_name = 'T_REFUNDBACK_TASK';
-- 给表建索引
create index indexbatchid on T_REFUNDBACK_TASK (batchid);
-- 都可以使用
SELECT * FROM T_ARAP_INFO WHERE LENGTH(SEQ_ID) != 30;
SELECT * FROM T_ARAP_INFO WHERE LENGTH(SEQ_ID) <> 30;
--普遍对于增删改查的英文缩写为crud 即create read updata delete(不按顺序翻译)
--进入到:windows ->preferences->General->Appearance->Lable Decorations 勾选其中的 SVN 项即可。
--或者,还可以打开 windows ->preferences->Team -> SVN 中做相关设置。
select count(*)
from T_ACCOUNTING_PERIOD
where (to_date(start_date, 'yyyy-MM-dd') <= to_date('20120201', 'yyyy-MM-dd') and to_date(end_date, 'yyyy-MM-dd') >= to_date('20120201',' yyyy - MM - dd '))
or
(to_date(start_date,' yyyy - MM - dd ')<=to_date(' 20120222 ',' yyyy - MM - dd ') and to_date(end_date,' yyyy - MM - dd ')>=to_date(' 20120222 ',' yyyy - MM - dd '))
or(to_date(start_date,' yyyy - MM - dd ')>to_date(' 20120201 ',' yyyy - MM - dd ') and to_date(end_date,' yyyy - MM - dd ')<to_date(' 20120222 ',' yyyy - MM - dd '))
-- 查询数据库的job工作
select * from dba_jobs;
---手工执行定时任务
begin
dbms_job.run(8);
end;
---删除定时任务
begin
dbms_job.remove(8);
end;
--对同一个表,select 两个字段没问题,但是外围还有一层select的时候就需要通过别名加以区分
---建立索引可以增加select的效率,但是会降低update delete的效率
--通过where条件就可以使用建立的索引
select count(user),user.age from User user group by user.age having count(user)>10