PLSQL入门与精通(第3章:变量定义)

大家好。我是从事软件行业20年的牧无文兄

这章我们来介绍一下PLSQL的变量。

程序逻辑内一般情况下会有很多个执行语句,执行语句之间要进行交流,交流方式就是通过变量,让很多执行语句共有这些值。

变量定义,必须把那个放在各个执行语句都能够访问的共同场所,这个场所叫做变量定义区域(今后称为变量定义域)。

无名PL/SQL块,则使用DECLARE这个关键字开始变量定义域。在变量定义域中定义变量,然后在以BEGIN关键字开头的执行域中使用这些变量来描述执行语句。

变量定义的语法如下:
变量名 变量类型;

Oracle数据库的数据类型有几种类型,基本上是数据库表的数据类型(NUMBER、CHAR、VARCHAR2、DATE等)。这些类型可以直接作为变量的类型使用。

但是,对于字符串类型的VARCHAR2和CHAR2还有NCHAR等,需要注意长度的限制。
数据库表定义VARCHAR2(4000), CHAR(2000),这个长度限制是4000和2000。
在PLSQL定义变量长度的上限是VARCHAR2(32767)、CHAR(32767)。

以下是使用变量的具体示例。

定义一张表:ENAME
字段:EMPNO Number(10),ENAME Varchar2(10), JOB Varchar(20)
数据: EMPNO ENAME JOB = 10001 ‘牧无文兄’ ‘软件开发’

PLSQL例子:

SQL> SET SERVEROUTPUT ON

1 DECLARE
2 V_NAME VARCHAR2(10); '变量定义
3 V_JOB VARCHAR2(10); ‘变量定义
4 BEGIN
5 SELECT ENAME, JOB INTO V_NAME, V_JOB
6 FROM cWHERE EMPNO=&EMPNO;
7 DBMS_OUTPUT.PUT_LINE
8(V NAME||‘的职业是||V JOB|’。’);
9 END;
10 /

请输入EMPNO的值:10001

FROM EMP WHERE EMPNO=100001;

牧无文兄的职业是软件开发。

PL/SQL过程成功完成。

例子介绍:
首先,在SET SERVEROUTPUT ON的数据库服务器上提供该会话的消息缓冲器。

接着从DECLARE关键字开始无名块的记述,变量定义域开始。

在第2行和第3行中,V NAME、V JOB定义了变量。
在第4行的BEGIN开始执行部,在第5~6行询问员工表(EMP),将指定的职员编号(EMPNO)的职员的名字(ENAME)和工种(JOB)分别代入V NAME变量、V JOB变量。
在第7~8行中将字符串连接到变量,并将字符串存储到消息缓冲区。
第9行的END;表示PLSQL块的结束。

通过第10行的“/(斜线)”将此描述的无名块一起发送到数据库服务器。数据库服务器在无名块的执行完成后,将消息缓冲器的内容回复到SQLPlus侧,SQLPlus显示该消息。

结果是“牧无文兄的职业是软件开发。”。

也就是说,这个无名块是指定员工编号来显示详细内容的程序。

顺便说一下,第6行有“&EMPNO”的记述。

以&开头的这样的记述是SQLPlus的替换变量,也就是要在SQLPLUS中输入值之后,会把这个变量进行替换掉。

在上述例子中,“&EMPNO”这个文字被“10001”这个文字替换了。在这种状态下(即“10001”),向数据库服务器发送了无名块。

替换变量是SQL*Plus工具中单纯的字符串替换功能,无论是表名还是列名,都可以用字符串替换。替换变量的名称是变量,但是请注意从PL/SQL块的角度来看不是变量。

另外,上述第5~6行的SELECT语句是SELECT INTO语句是及其重要的语法,使用频率也很高。后边会有详细介绍

这章就到这里,接下来会对变量的定义和使用进行深入的介绍。

猜你喜欢

转载自blog.csdn.net/niusr_1980_01/article/details/113916404