pl/sql学习笔记之三 plsql basics

本文介绍了PL/SQL的基础知识,包括大小写敏感性、基本结构、参数传递方式。还讨论了10g引入的新特性,如内置包DBMS_SCHEDULE、DBMS_COPYTO和DBMS_MONITOR,编译警告、条件编译以及优化级别设置。同时讲解了正则表达式和字符串处理的新方法。

1、plsql大小写敏感,代码规则一般为:命令为大写,变量小写;
2、结构
    declare
        dec var
    begin
       exe section
    exception
       exception handle
    end;
    最简单的空语句
      begin
         null;
      end;
3、不推荐在参数中使用NOCOPY提示符,使用IN/OUT;pass-by-value和pass-by-reference分别对应IN,IN and OUT以及 OUT only.
4、plsql datatype的function不能再command line里面调用,sql datatype的function可以。
5、DETERMINISTIC语句最好不要在有session变量的function中使用,一般在function-based indexes和materialized views上使用;
    PIPELINED在function返回collections使用能提高性能,如同nested tables嵌套表或者是VARRAYs,返回system renference cursor时也有此效果。
6、10g 提供的新特性
     Built-in Packages
    
10g release2开始,
     DBMS_SCHEDULE 取代 DBMS_JOB 调度和处理批job;
     DBMS_COPYTO对大对象进行加密/解密,支持多字符集;
     DBMS_MONITORDelivers an API supporting tracing and statistic gathering by sessions;

     Compile-Time Warnings
    
10g release1 开始
    
可以为session或者database设置,设置方法
     ALTER SESSION SET plsql_warnings = 'enable:all';
     Conditional Compilation
     
10g release2开始
     设置、使用方法如下:
     ALTER SESSION SET PLSQL_CCFLAGS = 'debug:1';单个变量设置
     ALTER SESSION SET PLSQL_CCFLAGS = 'name1:value1 [, name(n+1):value(n+1) ]';多个变量设置
     使用
     BEGIN
         $IF $$DEBUG = 1 $THEN $$变量引用
             dbms_output.put_line('Debug Level 1 Enabled.');
         $END正常的if-then-else此处为END IF
     END;
     function可以如下使用
     CREATE OR REPLACE FUNCTION conditional_type
     ( magic_number $IF $$DEBUG = 1 $THEN SIMPLE_NUMBER $ELSE NUMBER $END )
     RETURN NUMBER IS
     BEGIN
             RETURN magic_number;
     END;
     也可以在AS、IS后面使用。
     Optimized PL/SQL Compiler
     
10g release 1
     为session设置pl/sql优化参数 ALTER SESSION SET plsql_optimize_level = 0;
     为单个procedure设置pl/sql优化参数 ALTER PROCEDURE some_procedure COMPILE plsql_optimize_level = 1;
     使用上一个优化参数设置 ALTER PROCEDURE some_procedure COMPILE REUSE SETTINGS;
     优化参数具体含义如下
     0 No optimization.
     1 Moderate optimization, may eliminate unused code or exceptions.
     2 (default) Aggressive optimization, may rearrange source code flow.
     Regular Expressions
     
10g release 1
     REGEXP_LIKE This searches a string for a regular expression pattern match.
     REGEXP_INSTR This searches for the beginning position of a regular expression pattern match.
     REGEXP_SUBSTR This searches for a substring using a regular expression pattern match.
     REGEXP_REPLACE This replaces a substring using a regular expression pattern match.
     引号转换
     10g release 1
     原  SELECT 'It''s a bird, no plane, no it can''t be ice cream!' AS phrase
            FROM dual;

     新写法 SELECT q'(It's a bird, no plane, no it can't be ice cream!)' AS phrase
                FROM dual;
     都是输出It's a bird,no plane,no it can't be ice cream!   

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值