虚位以待(AD)
虚位以待(AD)
首页 > 数据库 > MsSql数据库 > SQL-PL/SQL基础

SQL-PL/SQL基础
类别:MsSql数据库   作者:码皇   来源:zhangdong_zender     点击:

SQL的4GL,对流程控制的支持不够,Oracle的PL SQL是3GL,添加了流程控制、变量等支持可以在数据库层面上进行程序的设计。PL SQL的特点 1 支持事务控制和SQL 2 数据类型在SQL的基础上进行了扩展。 3 PL

SQL的4GL,对流程控制的支持不够,Oracle的PL/SQL是3GL,添加了流程控制、变量等支持可以在数据库层面上进行程序的设计。

PL/SQL的特点
1.支持事务控制和SQL.
2.数据类型在SQL的基础上进行了扩展。
3.PL/SQL可存储在Oracle数据库上。
4.可以对PL/SQL进行权限控制。

PL/SQL的优势
1.可以提高横向的运行性能。
2.可以使程序模块化。
3.可以采用逻辑控制语句来控制程序的结构。
4.利用运行时的错误信息,做日志记录。
5.良好的移植性。

PL/SQL的结构
pl/sql的基本单位是块,分为三部分:声明部分,执行部分和异常处理部分。
以declare作为开始标记,执行部分用begin作为标志,异常处理部分以exception作为标志,其中执行部分是必须有的。

    [declare]....begin ...[exception] ...end;

例如:
只包含执行体

    begin dbms.output.put_lin('
    执行体...'
    );
    end;

注意,在使用dbms_output之前要打开控制器输出开关:set serveroutput on;

包含声明和执行体两部分:

    declare v_result number(8,2);
    begin v_result = 100 / 6;
    dbms_output.put_line('
    结果是:'
    ||v_result);
    end;

包含声明、执行体和异常处理三部分

    declare v_ename varchar2(20);
    begin select ename into v_ename from emp where empno=7369;
    dbms_output.put_line('
    姓名:'
    ||v_ename);
    exception when no_data_found then dbms_output.put_line('
    没有该员工'
    );
    when too_many_rows_exeption then dbms_output.put_line('
    数据过多'
    );
    end;
PL/SQL中变量的使用
1.声明变量的语法结构
    variable_name datatype[ [not null] {
    :=|default}
    expression];

2.常量声明

    constant_name constant datatype[not null]{
    :=default}
    expression;

常量的datatype有以下三种:
1)标量类型:单一类型,不存在组合
2)复合类型:由几种单一类型组成
3)引用类型:使用其他数据项的引用

标量类型:
数值
number(pression,scade)
binary_integer
pls_integer
simple_integer

字符
char
varchar2
nvarchar
long

布尔类型
true/false/null

日期类型
date/datestamp

复合类型(先定义后声明变量)
记录类型声明语法

    type type_name is recode( field_name datatype [ [not null] {
    :=|default}
    expression] [,field_name datatype [not null] {
    :=|default}
    expression ]);

VARRAY变长数组:它是一个存储有序元素的集合,适合较少的数据使用。

声明语法:

    type type_name is {
    varray}
    (size_limit) of element_type [not null]
PL/SQL中的结构控制语句

1.IF条件语句

    IF condition THEN statement;
    END IF;

    IF condition THEN statement;
    ELSE statement;
    ENDF IF;

    IF condition THEN statement;
    ELSE IF condition THEN statement;
    ELSE statement;
    END IF;

2.CASE语句
①简单case

    [<>]CASE case_operateWHEN condition THEN statement;
    [WHEN condition THEN statement;
    ][ELSE statement;
    ] END CASE[<>]

②搜索case

    [<>]CASE WHEN boolean_exp THEN statement;
    [WHEN boolean_exp THEN statement;
    ] ... [ELSE statement;
    ]END CASE[<>]
LOOP循环控制语句
1.基本LOOP
    [<>]LOOP statement;
    END LOOP [<>];

基本loop语句通常和exit连用,否则会出现死循环

    [<>]loop .... exit when ... | if ... exit;

2.WHILE..LOOP

    [<>]when boolean_exploop statement;
    end loop[<>]

3.FOR…LOOP

    [<>]for index_name in [REVERSE] //反向lower_bound, upper_boundloop statement;
    end loop[<>]
相关热词搜索: 基础