实用主义

把.Net用好用足

导航

快速上手PL/SQL script的几个注意点

1.无参的function写法
不要在函数名后加()
例:  create function AAA
 is return integer.
2.变量声明,赋值,特殊类型(字段类型,行类型)及成员赋值,空值检测
变量声明采用 VarName VarType形式声明在Declare块中;
赋值语句:VarName:=Value;
串处理:如果strA varchar2(10);且有赋值strA:='';则
    strA=''不成立;而strA is null成立!这是一个很容易出错的地方。
特殊数据类型:除了明确的数据类型,特殊数据类型还有字段类型Table1.Col1%type、表行类型Table1%rowtype、游标行类型Cursor_1%type,行类型数据在声明后可以对其成员赋值,类似于C的struct变量。
检查变量是不是空值要用is null而不能用"="。
3.游标声明,一般循环惯例,参数化游标,隐式游标
要访问数据库表值要使用游标,一个游标对应一个select语句,定义方式:cursor cursor1 is select XXXX;
使用时有两种常用方式:
简单方式:
for cur_row in cursor1
loop
  --process
end loop;
显式方式:
open cursor1;
loop
fetch cursor1 into xxxx;
exit when cursor1%notfound;
--process
end loop;
close cursor1;
游标的SQL也可以绑定参数,定义方式如下:
cursor cursor1(P1 varchar2) is select XXX where t=P1;

使用时传入参数:open cursor1('aa')

检查游标有无数据:

if cursor1%notfound or  cursor1%NOTFOUND IS NULL

3.执行SQL,绑定参数SQL,执行DDL
pL/SQL有两种常用执行SQL的写法。
直接SQL:select XXX from XXx;或insert /update/delete等
使用execute immediate 'SQL1',其中SQL1可以为DML,也可以为DDL
如果要执行的SQL要传入参数,则使用":参数名"定义参数并使用using传入参数,如下方式:
execute immediate 'delete XXX where Col1=:col1 and Col2=:col2' using Value1,Value2;
4.调试输出
使用系统包DBMS_OUTPUT.PUT和DBMS_OUTPUT.PUT_LINE。
5.异常处理,块结构
一个PL/SQL脚本由几个块构成:
Declare
变量定义段
 Begin
程序段
exception
   异常处理段
end ;
在程序段中可以内嵌Begin/End块,而在这些块中可以有内嵌的异常处理。
PL/SQL的异常处理与C++的类似,也是找最近匹配的异常处理块。
如:
WHEN OTHERS THEN
   dbms_output.PUT_LINE(SQLErrm);
出现异常时,异常信息在SQLErrm变量中。
6.数据对导时一些技巧
 字段对应关系
7.定义标号
用<<LableName>>来定义标号,可用于goto,exit等

posted on 2006-12-30 17:16  Render  阅读(1266)  评论(0编辑  收藏  举报