zoukankan      html  css  js  c++  java
  • 快速上手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等
  • 相关阅读:
    MessageDigest简介
    深入入门正则表达式(java)
    JAVA 正则 Pattern 和 Matcher
    理解Servlet过滤器 (javax.servlet.Filter)
    Java 之 I/O 系列 01 ——基础
    finally块中的代码一定会执行吗?
    wait(), notify(),sleep详解
    Java 多线程——基础知识
    集合迭代时对集合进行修改抛ConcurrentModificationException 原因 以及解决方案
    深入理解ServletRequest与ServletResponse
  • 原文地址:https://www.cnblogs.com/Render/p/608049.html
Copyright © 2011-2022 走看看