Every pl/sql constant, variable, parameter, and function return value has a data type that determines its storage format and its valid values and operations. This chapter explains scalar data types. A scalar data type can have domain. A domain has the same valid operations as its base type. A data type and its domains comprise a data type family. pl/sql predefines many types and domains, there are:
The SQL data types
PLS_INTEGER
STRING
The built-in base types are described in Chapter 9.
The pl/sql data types
PLS_INTEGER
and INT4
are identical.
The PLS_INTEGER
data type stores signed integers in
the range -2,147,483,648 through 2,147,483,647, represented in 32 bits.
A calculation with two PLS_INTEGER
values that
overflows the PLS_INTEGER
range raises an overflow
exception.
For example, use an anonymous block to raises an overflow:
DECLARE p1 PLS_INTEGER := 2147483647; p2 PLS_INTEGER := 1; n NUMBER; BEGIN n := p1 + p2; END; /
The VARCHAR2
data type has one predefined domain in
pl/sql, named STRING
.
The STRING
data type can be used for function or
procedure parameters.
For example:
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);
The STRING
data type support type modifier in
pl/sql.
For example:
DECLARE p STRING(10) := 'str'; BEGIN DBMS_OUTPUT.SERVEROUTPUT(true); DBMS_OUTPUT.PUT_LINE(p || 'ing'); END; /