每个 pl/sql 常量、变量、参数和函数返回值都具有某个数据类型。该类型决定了它的存储格式,值域以及操作。本章解释标量数据类型。标量数据类型可以具有域。一个域和其基本类型具有相同操作。 pl/sql 预定义了许多数据类型和域,包括:
SQL 数据类型
PLS_INTEGER
STRING
内建的基本类型在 Chapter 9 中进行描述。
pl/sql 的数据类型 PLS_INTEGER 和 INT4 是完全相同的。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;
/
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;
/