关于rownum
选择表中的某一行记录:(理解:rownum是oracle系统顺序分配为从查询返回的行的编号) select * from (select rownum a,t.* from testtab t) where a=2; select * from (select rownum a,t.* from testtab t) where a=3; select * from (select rownum a,t.* from testtab t) where a=4; 不能为: select * from (select rownum,t.* from testtab t) where rownum=2;或 select * from testtab where rownum=2; 返回多行记录: select * from testtab where rownum<=10; 返回某段记录:(
nested table, varray, index-by table的区别
record:该集合可以存储一对多的标量属性。 pl/sql表:是pl/sql代码中的“表”,只存在应用运行期间(内存里),类似“数组”,稀疏的,大小可以动态增长,可以有负下标,但不能存储在数据库表中。 varray:与pl/sql区别是可以在表列中存储,是密集的,不能删除单独记录,不能有负下标,固定大小的集合。 nested table:可以在表列中存储,稀疏的,可以删除单独记录,不能有负下标,大小可变。 1、记录: SQL> declare 2 type emp_rec_t is record( 3 no number, 4 name varchar2(10) 5 ); 6 emp1 emp_rec_t; 7 emp2 e
查询sql trace跟踪文件位置的语句
select d.value || '/' || lower(rtrim(i.instance, chr(0))) || '_ora_' || p.spid || '.trc' trace_file_name from (select p.spid from v$mystat m, v$session s, v$process p where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p, (select t.instance from v$thread t, v$parameter v where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i, (select value from v$parameter where name = 'use
关于outer join
select t1.rp_no,count(*) from zgire t1,zgwsg t2where t1.rp_no = t2.rp_no(+) and t1.rp_type = t2.rp_type(+)group by t1.rp_noorder by t1.rp_no; 等价于 select t1.rp_no,count(*) from zgire t1left outer join zgwsg t2on t1.rp_no = t2.rp_no and t1.rp_type = t2.rp_typegroup by t1.rp_noorder by t1.rp_no;[@more@]
TABLE( CAST( List1 AS TableList))
DECLARE List1 TableList; BEGIN SELECT DateType(payperiod) BULK COLLECT INTO List1 FROM period_tab; FOR c1 IN ( SELECT payperiod FROM TABLE( CAST( List1 AS TableList)) ) LOOP DBMS_OUTPUT.PUT_LINE( c1.payperiod ); END LOOP; END;[@more@]
dense_rank学习笔记
select *from (select t.*,dense_rank() over(partition by yield_day order by product_id desc) drfrom t_pd_cashproductyieldcon t)where dr = 1;[@more@]