44.4. 数据类型

44.4.1. SQL 数据类型
44.4.2. PLS_INTEGER
44.4.3. STRING

每个 pl/sql 常量、变量、参数和函数返回值都具有某个数据类型。该类型决定了它的存储格式,值域以及操作。本章解释标量数据类型。标量数据类型可以具有域。一个域和其基本类型具有相同操作。 pl/sql 预定义了许多数据类型和域,包括:

44.4.1. SQL 数据类型

内建的基本类型在 Chapter 9 中进行描述。

44.4.2. PLS_INTEGER

pl/sql 的数据类型 PLS_INTEGERINT4 是完全相同的。PLS_INTEGER 存储有符号整数,范围介于 -2,147,483,648 到 2,147,483,647,占 32 个比特位。

计算两个 PLS_INTEGER 类型的值,如果结果超过该类型的值域,则产生一个溢出异常,比如:

DECLARE
    p1 PLS_INTEGER := 2147483647;
    p2 PLS_INTEGER := 1;
    n NUMBER;
BEGIN
    n := p1 + p2;
END;
/
            

44.4.3. STRING

VARCHAR2 类型在 pl/sql 中有一个预定义的域,名为 STRING

STRING 类型可以用于函数或存储过程的参数,比如:

CREATE OR REPLACE PROCEDURE testP(p1 IN STRING, p2 IN NUMBER) AS
BEGIN
    DBMS_OUTPUT.SERVEROUTPUT(true);
    DBMS_OUTPUT.PUT_LINE(p1 || p2);
END;
/

CALL testP('string', 123);
            

STRING 类型不支持类型修饰符,比如:

DECLARE
    p STRING(10) := 'str';
BEGIN
    DBMS_OUTPUT.SERVEROUTPUT(true);
    DBMS_OUTPUT.PUT_LINE(p || 'ing');
END;
/