Hmmm What Will This Package Do?
CREATE OR REPLACE PACKAGE valerr
IS
FUNCTION little_name RETURN VARCHAR2;
END valerr;
Package created.
Analyze This Package Body
CREATE OR REPLACE PACKAGE BODY valerr
IS
g_name VARCHAR2 (1) := 'Lu';
FUNCTION little_name RETURN VARCHAR2
IS
BEGIN
RETURN g_name;
END little_name;
BEGIN
DBMS_OUTPUT.put_line ('Before I show you the name...');
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (
'Trapped the error: ' || DBMS_UTILITY.format_error_stack ());
END valerr;
Package Body created.
First Reference to Package
BEGIN
DBMS_OUTPUT.PUT_LINE ('Name = ' || valerr.little_name);
END;
ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at "SQL_XHITRQCLNGGVIMZMFNZOMNZRC.VALERR", line 3 ORA-06512: at line 2 ORA-06512: at "SYS.DBMS_SQL", line 1721More Details: https://docs.oracle.com/error-help/db/ora-06502
Second Reference to Package
BEGIN
DBMS_OUTPUT.PUT_LINE ('Name = ' || valerr.little_name);
END;
ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at "SQL_XHITRQCLNGGVIMZMFNZOMNZRC.VALERR", line 3 ORA-06512: at line 2 ORA-06512: at "SYS.DBMS_SQL", line 1721More Details: https://docs.oracle.com/error-help/db/ora-06502
Two Executions Within Same Block
BEGIN
BEGIN
DBMS_OUTPUT.PUT_LINE ('Name = ' || valerr.little_name);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE (SQLERRM);
END;
DBMS_OUTPUT.PUT_LINE ('Name = ' || valerr.little_name);
END;
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
Name =
CREATE OR REPLACE PACKAGE valerr
IS
FUNCTION little_name RETURN VARCHAR2;
FUNCTION big_name RETURN VARCHAR2;
END valerr;
Package created.
CREATE OR REPLACE PACKAGE BODY valerr
IS
g_big_name VARCHAR2 (100) := 'LuAnn the Champion Wrestler';
g_name VARCHAR2 (1) := 'Lu';
FUNCTION little_name RETURN VARCHAR2
IS
BEGIN
RETURN g_name;
END little_name;
FUNCTION big_name RETURN VARCHAR2
IS
BEGIN
RETURN g_big_name;
END big_name;
BEGIN
DBMS_OUTPUT.put_line ('Before I show you the name...');
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (
'Trapped the error: ' || DBMS_UTILITY.format_error_stack ());
END valerr;
Package Body created.
BEGIN
DBMS_OUTPUT.PUT_LINE ('Big name = ' || valerr.big_name);
END;
ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at "SQL_XHITRQCLNGGVIMZMFNZOMNZRC.VALERR", line 4 ORA-06512: at line 2 ORA-06512: at "SYS.DBMS_SQL", line 1721More Details: https://docs.oracle.com/error-help/db/ora-06502
BEGIN
DBMS_OUTPUT.PUT_LINE ('Big name = ' || valerr.big_name);
END;
ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at "SQL_XHITRQCLNGGVIMZMFNZOMNZRC.VALERR", line 4 ORA-06512: at line 2 ORA-06512: at "SYS.DBMS_SQL", line 1721More Details: https://docs.oracle.com/error-help/db/ora-06502