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的字符集以及标识符关键字等
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('这条语句不会输出');
<<the_point>> --这是一个标签,提供GOTO语句的定位功能
dbms_output.put_line('goto 语句执行成功');
end;
我们的嵌套块可以是匿名的,我们可以用标签为它赋予一些意义。
9603

被折叠的 条评论
为什么被折叠?



