zoukankan      html  css  js  c++  java
  • Oracle中PL/SQL简介、基本语法以及数据类型

    Oracle中PL/SQL简介、基本语法以及数据类型

    一.PL/SQL简介。

      Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控制为一体的强大语言,PL/SQL不但支持更多的数据类型,拥有自身的变量申明,赋值语句,而且还有条件,循环等流程控制语句。过程控制结构与SQL数据处理能力无缝的结合形成了强大的编程语言,可以创建过程和函数以及程序包。

      PL/SQL是一种块结构的语言,它将一组语句放在一个块中,一次性的发送给服务器,由服务器和自身引擎两个执行器执行代码。如下图:

      

      优点:

    • 支持SQL

        SQL是访问数据库的标准语言,通过SQL命令,用户可以操纵数据库的数据。PL/SQL支持所有的SQL数据操纵命令、游标控制命令、事务控制命令、SQL函数、运算符和伪列。

      同时PL/SQL和SQL语言紧密集成,PL/SQL支持所有的SQL数据类型和NULL值。

    • 支持面向对象编程

        PL/SQL支持面向对象的编程,在PL/SQL中可以创建类型,可以对类型进行继承,可以在子程序中重载方法等。

    • 更好的性能

        SQL是非过程语言,只能一条一条的执行,而PL/SQL把一个PL/SQL统一进行编译后执行,同时还可以把编译好的PL/SQL块存储起来,以备重用,减少了应用程序和服务器之间的通      信时间,所以PL/SQL是高效而快速的。

    • 可移植性

        使用PL/SQL编写的应用程序语言,可以移植到任何操作平台的ORACLE服务器,同时还可以编写可移植程序库,在不同环境中使用。

    • 安全性

         可以通过存储过程对客户机和服务器之间的应用程序逻辑进行分割,这样可以限制对ORACLE数据库的访问,数据库还可以授权和撤销其他用户的访问权利。

    二.PL/SQL基本语法。

      PL/SQL是一种块结构的语言。一个PL/SQL包含了一个或多个逻辑快,逻辑块中可以声明变量、写程序主体、还可以捕获异常和异常处理。每个逻辑快分为三个部分,语法结构如下:

        PL/SQL的语法结构


      [DECLARE

          --declaration statements]                变量或常量声明部分。可选。

      BEGIN

          --executable statements         执行部分。BEGIN开始,END结束(加;号)。必须写。

      [EXCEPTION

          --exception statements]         异常处理部分。可选。作用于java中异常的作用和机制都一样。

      END;

      注意:

    • LP/SQL是一种编程语言,有自己独有的数据类型,变量声明和赋值以及流程控制语句。
    • 对大小写不敏感,但是为了规范:关键字全部大写,其余部分小写。
    • 每一条语句以分号结束。

        PL/SQL特殊符号说明:

      

    三.变量和常量。

      声明变量:

      变量名 数据类型[:=初始值];

    DECLARE
    a int;
    BEGIN
     select MGR into a from emp where empno=7369;
    END;

      变量名 数据类型 DEFAULT 初始值;

    DECLARE
    b int default 0;
    BEGIN
     select MGR into b from emp where empno=7369;
    END;

      声明普通常量:

      常量名 CONSTANT 数据类型 :=常量值;

    set serveroutput on;  --设置向控制台输出
    DECLARE
    c CONSTANT int:=666;
    BEGIN
     dbms_output.put_line(c);
    END;

    四.PL/SQL数据类型。

    • 标量数据类型  

        前面在建表时,学习过Oracle SQL的数据类型,PL/SQL不但支持这些数据类型,还具备自身的数据类型。如下图:

      

      

    • 属性数据类型

        当声明一个变量的值是数据库的一行或者是数据库的某列时,可以直接使用属性类型来声明。ORACLE有两种属性数据类型:%TYPE和%ROWTYPE

        %ROWTYPE

          引用数据库表中的一行作为数据类型,可以使用" . " 来访问记录中的属性。

          实例:

    set serveroutput on;                                      结果:
                                                       DECLARE                                                    EMPNO ENAME SAL myrow EMP%ROWTYPE;                                             7369 SMITH 800 BEGIN select * into myrow from emp where empno=7369; dbms_output.put_line('EMPNO ENAME SAL'); dbms_output.put_line(myrow.empno||' '||myrow.ename||' '||myrow.sal); END;

        %TYPE

          引用某个变量或者数据库的列的类型作为某变量的数据类型。

          实例:

    set serveroutput on;
    DECLARE                                              说明:
      sal emp.sal%TYPE;                        
      mytype NUMBER(4):=1000;                                          定义sal的数据类型为emp表中sal的数据类型。
      sumsal mytype%TYPE;
    BEGIN
      select SAL into sal from emp where empno=7499;                             定义sumsal的数据类型为mytype的数据类型。
      sumsal:=sal+mytype;
      dbms_output.put_line(sumsal);
    END;
      
    
  • 相关阅读:
    Geometry
    后缀数组dc3算法模版(待补)
    CodeForces 467D(267Div2-D)Fedor and Essay (排序+dfs)
    HDU 3572 Task Schedule (最大流)
    Acdream手速赛7
    hdu2732 Leapin' Lizards (网络流dinic)
    HDU 3549 Flow Problem (最大流ISAP)
    HDU 1532 Drainage Ditches (网络流)
    [容易]合并排序数组 II
    [容易]搜索插入位置
  • 原文地址:https://www.cnblogs.com/bzx888/p/4808520.html
Copyright © 2011-2022 走看看