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;