码迷,mamicode.com
首页 > 数据库 > 详细

Oracle存储过程

时间:2016-07-11 01:07:30      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

1、with-as-select语法:相当于临时表

with t as (select * from emp where deptno=10)
select * from t;

2、case语法和decode语法

DECODE(value,if1,then1,if2,then2,if3,then3,...,else)

 1 select(
 2     case ename
 3          when SMITH then 史密斯
 4          when ALLEN then 艾伦
 5          else ename
 6          end
 7      ) as "姓名"
 8 from emp ;
 9 
10 select decode(ename,SMITH,史密斯,ALLEN,艾伦,ename) from emp;

 

3、execute immediate

oracle中DBMS_SQL package包和EXECUTE IMMEDIATE都可以用来解析并执行动态SQL语句或非运行时创建的PL/SQL块,

相比较而言,EXECUTE IMMEDIATE使用较简单,能够满足较常用的需要

EXECUTE IMMEDIATE v_sql  [BULK COLLECT INTO 或INTO 返回值变量] [INTO 入参 1,.., out 出参1,..]

 1 DECLARE  
 2   v_sql   VARCHAR2(1000);  
 3   v_table VARCHAR2(30) := test_dynamic_sql;  
 4 BEGIN  
 5   v_sql :=  create table  || v_table ||  
 6             (id varchar2(10),name varchar2(100));  
 7   EXECUTE IMMEDIATE v_sql;  
 8 END;  
 9 DECLARE  
10   v_sql   VARCHAR2(1000);  
11   v_table VARCHAR2(30) := test_dynamic_sql;  
12 BEGIN  
13   --1、绑定输入变量  
14   v_sql :=  insert into  || v_table ||  values (:1,:2);  
15   EXECUTE IMMEDIATE v_sql  
16     USING 2, binding_in_variable; --使用using绑定输入变量  
17 END; 

4、nvl()和nvl2()

nvl(COMMISSION_PCT,0)
如果第一个参数为null,则返回第二个参数
如果第一个参数为非null,则返回第一个参数

NVL2(COMMISSION_PCT,‘SAL_COMM‘,‘SAL‘)
如果第一个参数为null,则返回第三个参数
如果第一个参数为非null,则返回第二个参数

nullif(length(first_name),length(last_name))
如果两个参数值相等,则返回 null
如果两个参数不等,则返回第一个表达式值

COALESCE(EXPR1,EXPR2,EXPR3...EXPRn)
从左往右数,遇到第一个非null值,则返回该非null值。

5、connect by用法

http://blog.csdn.net/chiclewu/article/details/15027245

http://blog.csdn.net/fw0124/article/details/6775163

http://blog.csdn.net/leshami/article/details/5616877

1 select * from emp
2 start with empno=7839
3 connect by prior empno = mgr;

--prior表示前一条记录,即下一条返回记录的mgr应当等于前一条记录的empno

 

Oracle存储过程

标签:

原文地址:http://www.cnblogs.com/wangwanchao/p/5658985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!