PL/SQL语言基础

PL/SQL语言基础

本文将介绍PL/SQL的语法,字符集等语言规则,可能初期还不理解,但随着学习的深入,将会逐渐理解PL/SQL。

我写着文章的目的是为了在我阅读《Oracle.PL.SQL程序设计》一书是做些笔记,并分享给其他同学。


PL/SQL的块结构

pl/sql块由以下四个方面组成:

  • 块头(可选) 块头主要是确定pl/sql的名称,类型,参数,返回本文/sql引擎要执行的语句
  • 异常处理(可选) 这一部分类似于java中的try-catch,指的是处理pl/sql运行时出现的异常

举个栗子:

procedure addEmp (ename_in IN VARCHAR2) --块头
is
       hiredate_sys date;              --声明
begin                                   
       hiredate_sys:=sysdate;         --执行

       insert into m_employees (ename,hiredate) values (ename_in,hiredate_sys);

exception
                                    --异常
end;  

PL/SQL的块分类

  • 匿名块 指的是没有块头部分的块结构
  • 命名块 指的是有块头部分的块结构,上面的栗子就是一个命名块
  • 嵌套块 指的是嵌套在块中的子块

    再来个栗子:

  procedure demo1

  is
    ......
  begin

    ......

    --下面是一个嵌套块
     declare
          ......
     begin
          ......
     end;

  end;

PL/SQL中作用范围的理解

在java或者其他语言中也有作用范围的概念,比如说同一个类中方法中的变量在其他里面是不可见的,在PL/SQL中也有类似的概念。
在一个块中生命的变量或者其他,在其他块中是不可见的,只有在本块或者本块的子块中可以使用。
有一种特殊情况需要注意,当子块中具有和包围块中相同的变量名,采用就近原则,除非采用下面方面指明应用父块中的变量。

第三个栗子:

  package demo1

  is
     variable1 number;
  begin

    --下面是一个嵌套块
     declare
         variable1 number;
     begin
         variable1 := 30; --这个指的是嵌套块中的变量
         demo1.variable1 :=40 --这个指的是包围块中的变量
     end;

  end;

有一种叫做嵌套程序的结构,它指的是在包围块的声明部分中的过程或者函数,包围块中的变量对于嵌套程序是可见的,嵌套程序可以在执行过程中被调用。
举个小李子,时间太晚了,不敲了,有些犯懒。
PL/SQL语言基础_第1张图片

PL/SQL的字符集以及标识符关键字等

PL/SQL的字符集

字符集
为US7ASCII,记住是ASCII就好。最重要的是PL/SQL是一个不区分大小写的语言。

PL/SQL的标识符命名规则为:
  • 最长30个字符
  • 必须以字符开头
  • 可以带有$,_,#

    标识符的命名规则相信每个公司都有规定,但是我要讲一个有趣的事。我可以明明一个标识符为 (“ABC”)注意这个标识符是带有双引号的,之前说PL/SQL不区分大小写,但是以这种方式命名的标识符是区分大小写的,并且使用时必须带有双引号。

关于字符串中使用单引号的问题

在PL/SQL中我们定义一个字符串时是这样定义的 —— ‘我是个字符串’ 但当我定义一句英文时就尴尬了 ( I’m a string ) 想要表达这样的句子我们不得不这样写——’I”m a string ’ 。其实还有一种办法就是—— q’!I’m a string!’ 其中的 ! 可以为 {} , [] ,(),||。

PL/SQL中的注视

PL/SQL中支持单行注释以 – 开头。多行注释 由/* */ 包围

PL/SQL的标签符号《》

标签通常和GOTO语句一起应用,格式为 《identifier》,其中identifier是一个PL/SQL中有效的标识符。
最后一个栗子:

create or replace procedure demo8
is
begin
       dbms_output.put_line('test the goto');
       goto the_point;
       dbms_output.put_line('这条语句不会输出');
       <> --这是一个标签,提供GOTO语句的定位功能
       dbms_output.put_line('goto 语句执行成功');
end;

我们的嵌套块可以是匿名的,我们可以用标签为它赋予一些意义。

你可能感兴趣的:(PL/SQL初学笔记)