个人记性比较差,很多基础语法总是忘记,在这里把一些低级语法,总一下。
1,goto用法 、
begin
其他语句
goto over_flag;
其他语句
<<over_flag>>
log('程序直接调到这里,做日志输出');
end;
2,sqlerrm sqlcode 常用异常的系统默认代码,要将其赋值给预先定义的变量才能用
3,独立事务 pragma autonomous_transaction; (在建立过程或函数时,在is后面加上该语法即可)
一般和rollback同时应用,防止回滚对主程序产生影响,同时可以作出很好的异常处理,同时对于dml的语法对应的过程,其中应该考虑commit的作用
一瞬间理解rollback和return的差别, rollback只是将dml语句的操作进行回滚,程序会继续往下走,而return 会直接结束程序
4,临时表建表
临时表建表语句
基于事务的:create global temporary table cux.cux_gl_seg_hierarchys_temp01 (
FLEX_VALUE VARCHAR2(60),
SUMMARY_FLAG VARCHAR2(1)) ON COMMIT DELETE ROWS ;
基于会话的:on commit delete rows中的delete 改为PRESERVE 二者的区别从写法意义上区分即可
关于临时表应用的猜想:
将一些复杂的子集,先放在临时表里,而后在主结构中进行引用,会使得程序结构变得更加清晰
5 ,substr 和instr
substr(‘varchar2’,‘number(起始位置)’,‘number(截取长度)’)
instr(‘varchar2’,‘#’,‘number(起始位置)’,‘number第几个#’)
6,报表中常用的两个自定义过程
----日志
procedure log(p_msg varchar2) is
begin
fnd_file.put_line(fnd_file.log, p_msg);
end log;
----打印输出(xml或html)
procedure output(p_msg varchar2) is
begin
fnd_file.put_line(fnd_file.output, p_msg);
end log;
7,建立同义词
create synonym table_name for user.table_name;