技术开发 频道

ORACLEERP开发基础之Oracle数据库基础

  随机取前10条不同的记录

  Oracle有提供一个函数来实现取随机数:DBMS_RANDOM

  SELECT DBMS_RANDOM.VALUE FROM DUAL;

  返回0--1之间的随机数,因为DBMS_RANDOM是默认使用时钟作为种子,来实现取随机数的。

  select * from(select * from hek_test_tb order by dbms_random.value(1,10)) where rownum<10

  TRUNC函数

  Oracle与SQL SERVER在日期比较方面有重大区别。

  例:含有日期+时间的字段BEGINDATE与仅含有日期的字段在比较时ENDDATE。

  SQL SERVER:BEGINDATE<=ENDDATE

  ORACLE:TRUNC(BEGINDATE,‘DD‘)<=ENDDATE ORACLE必须先截断时间,然后再进行比较。如果没有这样做,这将会是一个巨大的BUG。

  修改表的一些常用语法

  添加列:alter table hek_test_headers add col_test number;

  修改列:alter table hek_test_lines modify litem varchar(40) not null;

  删除列:alter table hek_test_lines drop columns col_test;

  重命名列:alter table hek_test_lines rename column col_test to col_test2;

  添加主键:alter table HEK_TEST_LINES add constraint pk_test primary key (LINEID);

  添加外键:alter table hek_test_lines add constraint fk_test foreign key(hid) references hek_test_headers(hid)

  失效主键:alter table hek_test_lines disable constraint pk_test;

  失效外键:alter table hek_test_lines disable constraint fk_test;

  删除主键:alter table hek_test_lines drop constraint pk_test cascade;

  删除外键:alter table HEK_TEST_LINES drop constraint fk_test;

  舍入函数

  三个舍入函数:round()、floor()、ceil()

  Round():实现四舍五入,允许设置保留的位数,这个也最常用的四舍五入函数。

  Floor():实现取整。一般的程序语言是整数除以整数,返回的仍是整数。PL/SQL想得比较多。

  Ceil():实现近似值。Ceil会直接近似取整,如果想保留小数,就要自己动手写个函数了。

  select 9/4 from dual;

  select CEIL(9/4) from dual;

  select round(9/4,0) from dual;

  实现类似BREAK语句

  在没有LOOP…END LOOP时,是不能使用EXIT的。但可以通过GOTO语句实现。

  declare

  t integer;

  begin

  t:=&t;

  DBMS_OUTPUT.PUT_LINE('T='||t);

  if t=1

  then DBMS_OUTPUT.PUT_LINE('Goto!');

  goto GOTOS;

  else

  DBMS_OUTPUT.PUT_LINE('NO Goto!');

  goto NoGoto;

  end if;

  <> for i in 1..10 loop

  DBMS_OUTPUT.put_line('i='||i);

  end loop test;

  <> NULL;

  end;

0
相关文章