标签:
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
标签:
原文地址:http://www.cnblogs.com/wangwanchao/p/5658985.html