当前位置:Gxlcms > 数据库问题 > Oracle存储过程

Oracle存储过程

时间:2021-07-01 10:21:17 帮助过:2人阅读

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存储过程

标签:

人气教程排行