您的位置  > 互联网

SQL则是数据库对于SQL语言的扩展,PL/SQL

DECLARE     -- 声明变量、游标BEGIN    -- 执行语句    -- [异常处理]END;/

该部分用于声明变量或游标(结果集类型变量)。 如果程序中没有变量声明,可以省略,异常处理部分也可以省略。 开始和结束“;” “/”不能省略。 在 PL/SQL 中,“;” 冒号表示每条语句的结束,“/”表示整个PL/SQL程序的结束。 了解了PL/SQL的程序结构后,我们开始编写PL/SQL的第一个hello world。

begin    DBMS_OUTPUT.PUT_LINE('hello world');end;/

是一个输出对象,是上面对象的一个​​方法,用于输出自动换行的字符串。 或者如果“命令窗口”中没有输出,您可以使用on/off命令来更改设置。

既然PL/SQL具有编程语言的特性,那么它自然也支持变量。

PL/SQL变量可以分为两种类型,“普通变量”和“特殊变量”。 特殊变量分为引用类型和记录类型。

普通变量是数据类型,包括char、date、long。

变量声明方式: 变量名 变量类型(变量大小);例如:O_NAME VARCHAR2(255);

给PL/SQL变量赋值有两种方法:

直接赋值 「:=」冒号加等号语句赋值,使用 select ... into ... 赋值,语法 select 值 into 变量

PL/SQL 中的连接使用“||”,这与 Java 中的“+”符号相同。 下面是一个例子。 我们输出一个变量:

DECLARE    O_NAME VARCHAR2(5) := 'TOM';BEGIN    dbms_output.put_line('NAME:'||O_NAME);END;/输出结果  NAME:TOM

我们来看看参考变量。 顾名思义,引用变量的类型和大小是指数据库表中字段的类型和大小。

变量声明方式:变量名 表名.列名%TYPE;例如:O_NAME EXP.NAME%TYPE;

记录变量用于保存一行记录,相当于Java中的对象。

变量声明方式:变量名 表名%ROWTYPE例如:o_exp exp%rowtype

学完变量,再学过程控制。 过程控制具有条件分支和循环。 PL/SQL 具有三种类型的循环。 这里我们只学习LOOP循环。

条件分支就是我们常见的if...else...我们看一下它的格式:

BEGIN    IF 条件1 THEN 执行1;    ELSIF 条件2 THEN 执行2;    ELSE 执行3;    END IF;END;

这里需要注意的是,这是“ELSIF”,并没有错。 这不是我们编程中常见的“else if”。 如果有 IF,则必须有 END IF。 这就像Java中用于判断条件判断开始和结束的大括号一样。

PL/SQL 中有三种类型的循环:LOOP、FOR 和 WHILE。 这里我们主要研究LOOP循环。

BEGIN    LOOP      EXIT WHEN 退出循环条件;    END LOOP;END;/

就像这里的分支控制一样,LOOP完成后一定要有END LOOP,这也相当于Java中循环开头和结尾的大括号。

接下来我们学习SQL编程中一个非常重要的知识点,“游标”。 其他数据库也支持游标。

游标:用于临时存储查询返回的多行数据,类似于Java中的容器(如果对Java中的容器不了解,可以参考我之前的文章Java容器框架进行学习整理)。 Java中的容器是用来安装Java 的,这里的游标是用来加载数据库中表的记录的。

游标的用法是:声明->打开->读取->关闭。

游标也有自己的属性:

让我们看一个使用游标的示例:

declare    --定义游标    cursor o_cur is select name from exp;    --定义变量    o_name exp.name%type;begin    --打开游标,这时游标位于第一条记录之前    open o_cur;    --循环    loop       --读取游标,向下移动游标一次       fetch o_cur into o_name;        --退出循环,当游标下移一次后,找不到记录时,则退出循环       exit when o_cur%notfound;       --输出结果       dbms_output.put_line('name:'||o_name);    end loop;    --关闭游标    close o_cur;end;/

最后我们一起来了解一下“存储过程”。

存储过程是存储各个PL/SQL业务处理过程以供重用的PL/SQL方法,类似于Java中的方法。

存储过程的语法:CREATE OR REPLACE PROCEDURE 存储过程名字(参数列表) ISBEGINEND [存储过程名字];

存储过程的参数可以分为不带参数、带输入参数和带输入输出参数。

让我们看一个带有输入和输出参数的存储过程的示例:

CREATE OR REPLACE PROCEDURE findName(O_NO IN NUMBER, O_NAME OUT VARCHAR2)
AS
BEGIN
SELECT NAME INTO O_NAME FROM EXP WHERE NO = O_NO;
END;

创建存储过程并一次成功编译后,我们就可以根据存储过程名称来调用它了。 调用存储过程时,我们需要注意传入参数的顺序和定义。 调用存储过程的方式有以下三种:

我们在 PL/SQL 中调用上面创建的存储过程:

DECLARE  O_NAME EXP.NAME%TYPE;BEGIN  findName(11111,O_NAME );  DBMS_OUTPUT.PUT_LINE('NAME = '||O_NAME);END;/

除了存储过程之外,PL/SQL还支持函数,存储过程与函数非常相似。 但函数必须返回参数,而且不如存储过程灵活,所以这里就不介绍了。 如果你有兴趣,可以自己去了解一下。