每个 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; /