现在的位置: 首页 > 综合 > 正文

PL/SQL –> 语言基础

2013年10月27日 ⁄ 综合 ⁄ 共 3785字 ⁄ 字号 评论关闭

--=====================

-- PL/SQL --> 语言基础

--=====================

 

    PL/SQL是过程化的SQL语言,是ORACLESQL语言的扩展,在普通SQL语句的基础上增加了编程语言的特点。使得该语言不仅具有过程编程语

言的特征,如循环、条件分支等。同时也具有对象编程语言的特征,如重载、继承等。

   

一、PL/SQL程序语言的组成

    主要由块组成

        一个块由三个基本部分组成:声明、执行体、异常处理

        PL/SQL块有匿名块和命名块

        命名块会将代码保存到服务器

       

    典型的块结构如下

        [ DECLARE                    --声明部分

            declaration_statements

        ]

        BEGIN

            executable_statements   --执行体部分

        [EXCEPTION

            exception_handling_statements    --异常处理部分

        ]

        END;

        /

   

    PL/SQL的语言优点

        支持SQL

        高生成率,性能好

        可移植性

        Oracle集成

       

二、PL/SQL的语法要素

    PL/SQL语法要素包括字符集、标识符、文本、分隔符、注释等。

 

    字符集:

        包括英文大小写

        0-数字

        空白符、制表符、空格

        一些特殊符号,如~、!、@、#等

        PL/SQL字符集不区分大小写

   

    标识符:

        变量、常量、子程序的名称

        以字母开头、最大长度个字符

        包含空格等特殊符号时,要用英文双引号括起来

 

    文字

        数值型

            可用常规表示,也可以用科学计数法和幂的形式

        字符型

            字符型用单引号括起

        日期型

        布尔型

            TRUEFALSENULL

           

    PL/SQL的数据类型

        NUMBER     数字型能存放整数值和实数值,并且可以定义精度和取值范围

            DEC    数字型NUMBER的子类型,小数

            DOUBLE PRECISION     数字型NUMBER的子类型,高精度实数

            INTEGER     数字型NUMBER的子类型,整数

            INT         数字型NUMBER的子类型,整数

            NUMERIC     数字型NUMBER的子类型,与NUMBER等价

            REAL        数字型NUMBER的子类型,与NUMBER等价

          SMALLINT    数字型NUMBER的子类型,取值范围比INTEGER

      BINARY_INTEGER  数字型可存储带符号整数,为整数计算优化性能

      VARCHAR2        字符型存放可变长字符串,有最大长度

      CHAR        字符型定长字符串

      LONG        字符型变长字符串,最大长度可达,767

      DATE        日期型以数据库相同的格式存放日期值

      BOOLEAN     布尔型TRUE OR FALSE

      ROWID ROWID 存放数据库的行号

        LOB类型,又分为BFILE,BLOB,CLOB,NCLOB

       

    操作符

        算术运算符

            +、-、*、/、**

 

        比较运算符

            =、<>~=!= ^=<<=>>=

 

        其它分隔符

            ():= (赋值)、,(表表项的分隔)、| |(字符串连接)

            << (标号开始) >> (标号的结束)

            --  单行注释

            /*    */    多行注释

            %   属性指示器,一般与TYPEROWTYPE等一起用

       

三、定义变量

    变量的类型可以分为

        标量类型

        复合类型

        参照类型

        LOB 类型

   

    1.标量类型(常用)

        varchar2(n),char(n),number(p,s),date,timestamp,long(long raw),boolean,binary_integer,binary_float,binary_double

        定义方法(定义时必须使用标量类型)

            identifier [constant] datatype [not null] [:= | default expr]

        v_ename     varchar2(20);

        v_sal       number(6,2);

        c_tax_rate  constant number(3,2):=3.35;

        v_hiredate  date;

        v_valid     boolean not null default false;

       

        v_ename emp.ename%type;    --使用表列来定义数据类型

        v_sal   emp.sal%type;

       

    2.复合类型(存放多个值的变量)

        plsql中包含pl/sql记录,pl/sql表,嵌套表,varray四种复合类型

        --定义PL/SQL记录

            declare

                type emp_record_type is record(

                    name       emp.ename%type,

                    salary     emp.sal%type,

                    title      emp.job%type);

                emp_record emp_record_type;

            begin

                select ename,sal,job into emp_record

                from scott.emp where empno=7788;

                dbms_output.put_line('Employee Name: ' || emp_record.name);

            end;

            /

           

        --定义PL/SQL

            declare

                type ename_table_type is table of emp.ename%type

                index by binary_integer;

                ename_table ename_table_type;

            begin

                select ename into ename_table(-1) from scott.emp

                where empno=7788;

                dbms_output.put_line('Employee Name : '|| ename_table(-1));

            end;

            /

            PL/SQL表类似于高级语言中的数组,PL/SQL表的下表可以为负值,元素的个数没有限制.注意必须首先定义PL/SQL表类型及表变量

            在本例中,ename_table_type为表类型,表类型中元素的数据类型为emp.ename%type

                ename_table为表变量,ename_table(-1)表示下标为-1的元素

       

        --嵌套表,varray例子略

       

    3.参照类型变量

        用于存放数值指针的变量。通常包括游标变量(REF CURSOR)和对象类型变量(REF obj_type)

    4.LOB变量

        存储大批量数据的变量,通常分为内部LOB以及外部LOB

    5.使用SQL*Plus变量

        必须首先使用variable命令定义变量,如在SQL*Plus中输出变量,则使用print variable_name

            scott@ORCL> var name varchar2(20);

            scott@ORCL> begin

           

抱歉!评论已关闭.