oracle pl/sql 小知识
2017-03-17 09:39
169 查看
1. procedure 或者 function 中 对 null 和 ” 的判断
CREATE OR REPLACE PROCEDURE TEST(PARA IN VARCHAR2) IS BEGIN IF PARA = '' THEN DBMS_OUTPUT.PUT_LINE('I AM '''' !'); ELSIF PARA IS NULL THEN DBMS_OUTPUT.PUT_LINE('I AM NULL'); ELSE DBMS_OUTPUT.PUT_LINE('NO TEST'); END IF; END;
测试结果:
exec TEST(''); I AM NULL PL/SQL procedure successfully completed. SQL> exec TEST(' '); NO TEST PL/SQL procedure successfully completed.
结论:
PARA = ” 没有什么实际效果,如果是赋值还可,比较就算了
2. 变量赋值
请使用 := 而不是 =
CREATE OR REPLACE PROCEDURE TEST2(OPER_TYPE IN VARCHAR2) IS v_staff_str varchar2(50) ; BEGIN v_staff_str := ' and staff_id= 100000 ' ; DBMS_OUTPUT.PUT_LINE(v_staff_str||' 1'); END; CREATE OR REPLACE PROCEDURE TEST2(OPER_TYPE IN VARCHAR2) IS v_staff_str varchar2(50) := ' and staff_id= 100000 ' ; BEGIN -- v_staff_str ; DBMS_OUTPUT.PUT_LINE(v_staff_str||' 1'); END; CREATE OR REPLACE PROCEDURE TEST2(OPER_TYPE IN VARCHAR2) IS BEGIN -- v_staff_str ; declare v_staff_str varchar2(50) ; begin v_staff_str := ' and staff_id = 100000 ' ; DBMS_OUTPUT.PUT_LINE(v_staff_str||' 1'); end; END; CREATE OR REPLACE PROCEDURE TEST2(OPER_TYPE IN VARCHAR2) IS BEGIN -- v_staff_str ; declare v_staff_str varchar2(50) := ' and staff_id = 100000 ' ; begin DBMS_OUTPUT.PUT_LINE(v_staff_str||' 1'); end; END;
3.传入参数和表列名相同
传入参数将会被覆盖
CREATE OR REPLACE PROCEDURE TEST2(OPER_TYPE IN VARCHAR2) IS v_staff_str varchar2(50); BEGIN DBMS_OUTPUT.PUT_LINE(OPER_TYPE||' 1'); insert into tmp_s select OPER_TYPE from table1 log inner join table2 staff staff.staff_id=log.staff_id where log.seqid=37968813; END;
测试结果:
SQL> exec TEST2(‘haha2’);
haha2 1
PL/SQL procedure successfully completed.
SQL> select * from tmp_s;
STAFF_CODE --------------- hehe haha 3PD
结论:
haha2 没有插入,被表列覆盖
相关文章推荐
- 一些零碎的知识(linq,lambda,oracle管理工具,pl/sql,oracle管理工具)
- Oracle---PL/SQL 基础知识
- Oracle基础知识(二十七) - PL/SQL修改字符编码
- oracle PL/SQL基础知识2
- PL/SQL语言(oracle知识)
- Oracle PL/SQL基础知识
- Oracle基础知识:在PL/SQL中修改ORACLE的字段顺序
- Oracle PL/SQL基础知识
- Oracle PL/SQL 编程手册(SQL大全)
- 摘录一段《Mastoring Oracle SQL》——PL/SQL Calling Stored Functions from Queries
- Oracle PL/SQL入门之案例实践(转)
- Oracle PL/SQL语言初级教程
- PL/SQL Developer 与 oracle 10g 客户端兼容性问题解决方法
- Oracle PL/SQL语言基础
- Oracle PL/SQL语言基础
- Oracle PL/SQL 编程手册(SQL大全)(转)
- [Oracle] PL/SQL集合增强
- Oracle PL/SQL 编程手册(SQL大全)(转)
- ZT:Oracle PL/SQL入门之慨述
- [转贴]Oracle PL/SQL 编程手册(SQL大全)