Oracle学习记录1

1、current_date与sysdate区别

在oracle中current_date与sysdate都是显示当前系统时间, 其结果基本相同,但是有三点区别:
a. current_date返回的是当前会话时间,而sysdate返回的是服务器时间.
b.current_date有时比sysdate快一秒,这可能是四舍五入的结果.
c. 如果修改当前会话的时区,比如将中国的时区为东八区,修改为东九区,则current_date显示的时间为东九区时间, 根据东加西减的原则,current_date应该比sysdate快一小时.

2、dual表

dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录,功能类似中转站。
select 999*999 from dual;

3、Nextval用法

在SQL Server 中,identity 属性可以自动增长,如
create   table   a(a1   int   identity(1,1), a2   varchar(6));
在Oracle 中,使用SEQUENCE(序列)可以达到目的,如
create   table   a
(
a1   int   ,
a2   varchar2(6)
);
create   SEQUENCE   seq_a     INCREMENT   BY   1;
然后在Insert时:
insert   into   a   values(seq_a.nextval, 'hello! '); --seq_a.nextval是该序列的下个值。

4、Merge into

通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,
连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。
这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。
/*语法:
MERGE [INTO [schema .] table [t_alias]
USING [schema .] { table | view | subquery } [t_alias]
ON ( condition )
WHEN MATCHED THEN merge_update_clause
WHEN NOT MATCHED THEN merge_insert_clause;
*/

5、日期转换

insert into table (col1,col2) values('value1',to_date('value2','yyyy-mm-dd hh24:mi:ss '))

6、插入数据
SELECT COUNT(1) INTO V_USER_ID FROM member WHERE EID = P_USER_ID;
if V_USER_ID=0 then
  P_ID:=0;
  P_MSG:='The USER_ID cannot be found.';
  RETURN;
end if;

 7、Oracle 调试存储过程
grant debug connect session to tony; grant debug any procedure to tony;
然后选中存储过程,点击右键,执行[编译以进行调试]。 可以添加断点,菜单 [运行]〉调试xxx。

原文地址:https://www.cnblogs.com/windy2008/p/4645912.html