循环: loop --执行代码 exit when 表达式;--当表达式为真退出循环.(注意,其编写位置决定循环为先判断还是先执行,相当于java的while或do-while) end loop; 相当于Java的 while(true) { --执行代码 if (表达式) break; } while 表达式 loop --执行代码 end loop; 和Java的while使用方式相同.通过它可实现java中for循环的功能 while n<10 loop --执行代码 n:=n+1; e
sqlserver2005前: --分组取最大最小常用sql--测试环境if OBJECT_ID('tb') is not null drop table tb;gocreate table tb( col1 int, col2 int, Fcount int)insert into tbselect 11,20,1 union allselect 11,22,1 union allselect 11,23,2 union allselect 11,24,5 union allselect 12
oracle 分组取第一行数据 SELECT * FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER BY y DESC) rn, t.* FROM test1 t ) WHERE rn = 1; 查找oracle 执行的语句 select t.*from v$sqlarea t where t.FIRST_LOAD_TIME like '2018-11-05%' order by t.FIRST_LOAD_TIME desc
numtodsinterval(<x>,<c>) ,x是一个数字,c是一个字符串,表明x的单位,这个函数把x转为interval day to second数据类型 常用的单位有 ('day','hour','minute','second') example SQL> select sysdate,sysdate+numtodsinterval(3,'hour') as res from dual; SYSDATE RES -------------
SPA的整体测试过程可以参考: 记录一则完整的SPA(10g->11g)测试过程 故障描述:数据库字符集:US7ASCII,在SPA分析阶段正常,但在取报告阶段xml解析失败,具体现象如下: SQL> ALTER SESSION SET EVENTS='31156 TRACE NAME CONTEXT FOREVER, LEVEL 0X400'; SET LINES 1111 PAGES 50000 LONG 1999999999 TRIM ON TRIMS ON SERVEROUTPUT O
要求计算某个表所占表空间的大小,网上查了些资料用到了oracle的3个视图.具体sql如下 select segment_name as tablename, round(bytes / (select sum(a.bytes) from dba_data_files a, user_users b ,) from user_segments where segment_name = '表名' 该sql只保留了小数点后3位
用oracle sql对数字进行操作: 取上取整.向下取整.保留N位小数.四舍五入.数字格式化 取整(向下取整): select floor(5.534) from dual; select trunc(5.534) from dual; 上面两种用法都可以对数字5.534向下取整,结果为5. 如果要向上取整 ,得到结果为6,则应该用ceil select ceil(5.534) from dual; 四舍五入: SELECT round(5.534) FROM dual; ) FROM dua
函数已经解决跨年问题 select to_char(date'2016-12-31','iW') from dual; select to_char(date'2017-01-01','iW') from dual; select to_char(date'2017-01-02','iW') from dual; select trunc(date'2016-12-31', 'iw') from dual; select trunc(date'2017-01-01', 'iw') from du