CREATE OR REPLACE PACKAGE plsql_limits AUTHID DEFINER
IS
-- "No error" error code
c_no_error CONSTANT PLS_INTEGER := 0;
-- Range of allowable user-defined error codes
c_min_user_code CONSTANT PLS_INTEGER := -20000;
c_max_user_code CONSTANT PLS_INTEGER := -20999;
-- Maximum size for VARCHAR2 in PL/SQL
SUBTYPE maxvarchar2 IS VARCHAR2( 32767 );
-- Maximum size for VARCHAR2 in database
SUBTYPE dbmaxvarchar2 IS VARCHAR2( 4000 );
-- Extended maximum size for VARCHAR2 in database (12.1)
SUBTYPE dbmaxvarchar2_Ext IS VARCHAR2( 32767 );
-- Maximum size of Oracle identifier: use conditional compilation!
SUBTYPE identifier_t IS VARCHAR2( 30 );
-- Maximum number of columns in table
c_max_columns CONSTANT PLS_INTEGER := 1000;
-- In-SQL access to various elements
FUNCTION min_user_code RETURN pls_integer RESULT_CACHE DETERMINISTIC;
FUNCTION max_user_code RETURN pls_integer RESULT_CACHE DETERMINISTIC;
FUNCTION max_pls_integer RETURN pls_integer RESULT_CACHE DETERMINISTIC;
FUNCTION min_pls_integer RETURN pls_integer RESULT_CACHE DETERMINISTIC;
END plsql_limits;
Package created.
CREATE OR REPLACE PACKAGE BODY plsql_limits
IS
-- Maximum and minimum BINARY_ and PLS_INTEGER values
c_max_pls_integer CONSTANT PLS_INTEGER := POWER( 2, 31 ) - 1;
c_min_pls_integer CONSTANT PLS_INTEGER := -1 * POWER( 2, 31 ) + 1;
FUNCTION min_user_code RETURN pls_integer RESULT_CACHE
IS
BEGIN RETURN c_min_user_code;
END;
FUNCTION max_user_code RETURN pls_integer RESULT_CACHE
IS
BEGIN RETURN c_max_user_code;
END;
FUNCTION max_pls_integer RETURN pls_integer RESULT_CACHE
IS
BEGIN
RETURN c_max_pls_integer;
END max_pls_integer;
FUNCTION min_pls_integer RETURN pls_integer RESULT_CACHE
IS
BEGIN
RETURN c_min_pls_integer;
END min_pls_integer;
END plsql_limits;
Package Body created.