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。