PL/SQL支持SQL中的数据类型,PL/SQL中正常支持NUMBER,VARCHAR2,DATE等Oracle SQL数据类型。声明变量必须指明变量的数据类型,也可以声明变量时对变量初始化,变量声明必须在声明部分。
声明变量的语法是:
语法格式:声明变量
| 变量名 数据类型[ :=初始值] |
|---|
语法解析:
数据类型如果需要长度,可以用括号指明长度,比如:varchar2(20)。
注意:字符型一定要定义长度,数字型可以不用定义长度。
代码演示:声明变量
| DECLARE SNAME VARCHAR2(20):=’JERRY’; ① BEGIN SNAME:=SNAME||’AND TOM’; ② —直接赋值 DBMS_OUTPUT.PUT_LINE(SNAME); ③ END; |
|---|
代码解析:
①声明一个变量sname,初始化值是“jerry”。字符串用单引号,如果字符串中出现单引号可以使用两个单引号(’’)来表示,即单引号同时也具有转义的作用。
②对变量sname重新赋值,赋值运算符是“:=”。
③dbms_output.put_line是输出语句。
对变量赋值还可以使用SELECT…INTO 语句从数据库中查询数据对变量进行赋值。但是查询的结果只能是一行记录,不能是零行或者多行记录。
代码演示:变量赋值
| DECLARE SNAME VARCHAR2(20); BEGIN SELECT ENAME INTO SNAME FROM EMP WHERE EMPNO =7934; —隐式游标赋值 DBMS_OUTPUT.PUT_LINE(SNAME); END; |
|---|
代码解析:
①使用select…into语句对变量sname赋值,要求查询的结果必须是一行,不能是多行或者没有记录。
2.1.2声明常量
常量在声明时赋予初值,并且在运行时不允许重新赋值。使用CONSTANT关键字声明常量。
代码演示:声明常量
| DECLARE PI CONSTANTNUMBER:=3.14;—圆周率长值 ① R NUMBERDEFAULT3;—圆的半径默认值3 ② AREA NUMBER;—面积。 BEGIN AREA := PI R R;—计算面积 DBMSOUTPUT.PUT_LINE(AREA);—输出圆的面积_ END; |
|---|
代码解析:
①声明常量时使用关键字CONSTANT,常量初值可以使用赋值运算符(:=)赋值,也可以使用DEFAULT关键字赋值。
2.1.2声明属性数据类型
%ROWTYPE:引用数据库中的一行(所有字段)作为数据类型。
%TYPE:引用数据库中的某列的数据类型或某个变量的数据类型。
【例】找出员工编号为7934的员工名称和工资
代码演示:%ROWTYPE
| DECLARE MYEMP EMP%ROWTYPE; BEGIN SELECT E.ENAME,E.SAL INTO MYEMP.ENAME,MYEMP.SAL FROM EMP E WHERE E.EMPNO =7934; DBMS_OUTPUT.PUT_LINE(MYEMP.ENAME||’的工资是’||MYEMP.SAL); END; |
|---|
代码演示:%TYPE
| DECLARE SNAME EMP.ENAME%TYPE; SSAL EMP.SAL%TYPE; BEGIN SELECT E.ENAME, E.SAL INTO SNAME, SSAL FROM EMP E WHERE E.EMPNO =7934; DBMS_OUTPUT.PUT_LINE(SNAME ||’的工资是’|| SSAL); END; |
|---|
