pl/sql学习笔记之三 plsql basics

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 10:45   11   0

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!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP