Oracle存储过程 学习笔记

2014-11-24 17:55:33 · 作者: · 浏览: 0

连接字符:||
赋值运算:":="
如: l_name :='sky';
判断是否相等:"="
如: if 1=1 then...
变量绑定:":"
如: if :P_NAME ='sky' then...


exists是否存在
not exists是否不存在


%type 匹配字段类型
%rowtype 匹配记录类型
%type当表类型改变的时候,不需要手动修改PL/SQL块中调用的该类型
例如:V_GP_ID SC_BALANCE_DAILY.Gp_Id%TYPE;


sqlcode sql语句
sqlerrm sql错误
no_data_found 当select into没有记录时出现(DML不触发NO_DATA_FOUND异常)


commit 提交 (insert、update、delete中使用)
比如你用test账户登录数据库insert到表中一条记录,而不commit,
那么别的账户在登录这个数据库时就查询不到你insert 的记录;而commit后则其他账户就能查询到你insert的记录了。
rollback 回滚 (insert、update、delete中使用)
比如你用test账户登录数据库delete表中一条记录,这时你查询这个表时,
则delete的记录不存在;再rollback后,你再查询你delete的记录时,发现被删除的记录又回来了。


nvl()
nvl(字段名,0),就是当你选出来的时候,这个字段虽然为空,但是显示的是0
例如:nvl(sum(rge_amt_sum),0) SJCZ_AMT, 当sum(rge_amt_sum)为空时,SJCZ_AMT的值为0


decode()
decode(列名,判断条件,符合判断条件的输出结果,不符合判断条件的输出结果)
例如:decode(business_type,'COD_PAY',amt,-amt) cod_def_amt


sysdate返回当前时间yyyy-mm-dd hh24-mi-ss
例:select sysdate from dual; --2013-6-7 10:36:30
sysdate+1得到的是后一天,如2013-6-8 10:36:30
trunc()返回当前日期yyyy-mm-dd
例:select trunc(sysdate) from dual; --trunc(sysdate) 2013-6-7
TIMESTAMP带毫秒格式的日期


--当月第一天
select trunc(sysdate,'mm') from dual;
--当月最后一天
select last_day(trunc(sysdate,'mm')) from dual;