zoukankan      html  css  js  c++  java
  • SQL-PL/SQL基础

    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

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

    ②搜索case

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

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

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

    2.WHILE..LOOP

    [<<label_name>>]
    when boolean_exp
    loop
         statement;
    end loop[<<label_name>>]

    3.FOR…LOOP

    [<<label_name>>]
    for index_name in 
    [REVERSE]  //反向
    lower_bound, upper_bound
    loop
        statement;
    end loop[<<label_name>>]
    
  • 相关阅读:
    SQL语句调优
    Oracle start with connect by prior
    博客园如何转载博客
    初遇java.lang.NoClassDefFoundError
    二叉搜索树、B树、B+树、B*树
    初见POJO
    win10系统Myeclipse装载tomcat7.0x遇见的新问题
    Myeclise新导入项目遇到的红色感叹号和红色叉问题
    SSM框架中文乱码解决方案
    第五天
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7389503.html
Copyright © 2011-2022 走看看