十二 05

数学函数

  1.绝对值
  S:select abs(-1) value
  O:select abs(-1) value from dual

  2.取整(大)
  S:select ceiling(-1.001) value
  O:select ceil(-1.001) value from dual

  3.取整(小)
  S:select floor(-1.001) value
  O:select floor(-1.001) value from dual

  4.取整(截取)
  S:select cast(-1.002 as int) value
  O:select trunc(-1.002) value from dual

  5.四舍五入
  S:select round(1.23456,4) value 1.23460
  O:select round(1.23456,4) value from dual 1.2346

  6.e为底的幂
  S:select Exp(1) value 2.7182818284590451
  O:select Exp(1) value from dual 2.71828182

  7.取e为底的对数
  S:select log(2.7182818284590451) value 1
  O:select ln(2.7182818284590451) value from dual; 1

  8.取10为底对数
  S:select log10(10) value 1
  O:select log(10,10) value from dual; 1

  9.取平方
  S:select SQUARE(4) value 16
  O:select power(4,2) value from dual 16

  10.取平方根
  S:select SQRT(4) value 2
  O:select SQRT(4) value from dual 2

  11.求任意数为底的幂
  S:select power(3,4) value 81
  O:select power(3,4) value from dual 81

  12.取随机数
  S:select rand() value
  O:select sys.dbms_random.value(0,1) value from dual;

  13.取符号
  S:select sign(-8) value -1
  O:select sign(-8) value from dual -1

  14.圆周率
  S:SELECT PI() value 3.1415926535897931
  O:不知道

  15.sin,cos,tan 参数都以弧度为单位
  例如:select sin(PI()/2) value 得到1(SQLServer)

  16.Asin,Acos,Atan,Atan2 返回弧度

  17.弧度角度互换(SQLServer,Oracle不知道)
  DEGREES:弧度-〉角度
  RADIANS:角度-〉弧度

数值间比较 更多详细内容 »

Tags:

作者:Jock

十二 05

1、add_months()用于从一个日期值增加或减少一些月份
date_value:=add_months(date_value,number_of_months)
select add_months(sysdate,12) “Next Year” from dual;

2、current_date()返回当前会放时区中的当前日期
date_value:=current_date

3、dbtimezone()返回时区
  varchar_value:=dbtimezone
  select dbtimezone from dual;

4、extract()找出日期或间隔值的字段值
  date_value:=extract(date_field from [datetime_value|interval_value])
  SQL> select extract(month from sysdate) “This Month” from dual;

5、last_day()返回包含了日期参数的月份的最后一天的日期
  date_value:=last_day(date_value)
  SQL> select last_day(date'2000-02-01') “Leap Yr?” from dual;

6、localtimestamp()返回会话中的日期和时间
  timestamp_value:=localtimestamp
  SQL> column localtimestamp format a28
  SQL> select localtimestamp from dual;

7、months_between()判断两个日期之间的月份数量
  number_value:=months_between(date_value,date_value)
  SQL> select months_between(sysdate,date'1971-05-18') from dual;

8、next_day()给定一个日期值,返回由第二个参数指出的日子第一次出现在的日期值(应返回相应日子的名称字符串)
更多详细内容 »

Tags:

作者:Jock

十二 05

1、游标的声明
块的DECLARATION部分给游标命名,并为他配备一个SELECT语句,就完成了游标的定义。
具体语法
CURSOR cursor_name [parameter_list]
[RETURN return_type]
IS query
[FOR UPDATE [OF (column_list)] [NOWAIT]];

2、游标的打开
OPEN author_cur1;
如果带有参数的列表的游标
OPEN author_cur1(50);
在这种情况下,传递给OPEN命令的值和绑定变量的值已经确定。这个值是不会在发生更改的,因此结果集也不会变化,除非将游标关闭然后重新打开。

3、记录的获取
语法:
fetch cursor_name into variable_name(s) | PL/SQL_record;

只有一列的
fetch author_cur into v_rowid;
游标返回多行记录,并且需要多个变量时,大致如下
fetch author_cur into v_first_name,v_last_name;
在这种情况下,游标author_cur的select语句中必须含有first_name,lase_name这两列,而且顺序不能颠倒。游标不能再包含其它列。

如果游标包含一条完整记录,就可以使用PL/SQL记录来代替变量:
declare
  v_author authors%rowtype;
begin

  fetch author_cur into v_author;



v_author变量包含了一条完整记录,v_author.column_name获取每个列的值。

4、游标的关闭
close cursor_name;
其中cursor_name是已经处于打开状态的游标的名称。

5、游标的属性
%bulk_exceptions
%bulk_rowcount
%found
%isopen
%notfound
%rowcount

6、使用loop遍历游标

loop
 fetch auth_cur into v_author;
 exit when auth_cur%notfound;
 …
end loop

fetch auth_cur into v_author;
while auth_cur%found loop
 ..
 fetch auth_cur into v_author;
end loop

for v_author in auth_cur
loop

end loop

Tags:

作者:Jock

Switch to our mobile site