Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Problema con DBMS_SQL ORA-06502

880399Aug 4 2011 — edited Aug 5 2011
Estoy trabajando sobre una db 10g y ejecutando el siguiente código se presenta el siguiente error

The following error has occurred:

ORA-06502: PL/SQL: numeric or value error
ORA-06512: at line 1
ORA-06512: at "SYS.DBMS_SYS_SQL", line 1200
ORA-06512: at "SYS.DBMS_SQL", line 323
ORA-06512: at line 137

El código que ejecuto es el siguiente

DECLARE
p_cod_fon VARCHAR2(100) := 'IF';
p_fec_dat DATE := '14-11-2010';
p1_cod_ins tg_emi_aut.cod_ins%TYPE := 'bfl08';
p1_cod_emi tg_emi_aut.cod_emi%TYPE := 'FIFCO';
p1_cod_mon NUMBER := 1;
p1_mar NUMBER := 0;
p1_fec_ven DATE := '03-04-2008';
p1_mod VARCHAR2(100) := 'DE';
p1_ser VARCHAR2(100) := 'FIFCO200403E';
p1_isin VARCHAR2(100) := 'CRFIFCOB0162';
p1_pre_uti VARCHAR2(100) := NULL;
p1_met_val NUMBER := 1;
p_tip_bus VARCHAR2(100) := 'C';
p1_cod_tas VARCHAR2(100) := NULL;
v_ret VARCHAR2(1);
v_isin tg_emi_aut.cod_isin%TYPE;
--
vncursor NUMBER;
vnexecute NUMBER;
vvsentencia VARCHAR2(500) := '';
vvsentencia1 VARCHAR2(500) := '';
vvsentencia2 VARCHAR2(500) := '';
vvcampos VARCHAR2(500) := '';
--
BEGIN
p1_pre_uti := NULL;
p1_cod_tas := NULL;
vncursor := DBMS_SQL.open_cursor;
vvcampos := 'Begin ' || 'SELECT ' || CHR(39) || 'S' || CHR(39) || ' into :vari ';
vvsentencia := ' FROM tg_emi_aut where ' || ' cod_emi = :p1_cod_emi AND ';
IF UPPER(p1_cod_ins) IN ('TPTBA', 'TP$A') THEN
-- Si son estos busca con upper en el instrumento
vvsentencia := vvsentencia || ' upper(cod_ins) = upper(:p1_cod_ins) ';
ELSE
vvsentencia := vvsentencia || ' cod_ins = :p1_cod_ins ';
END IF;
vvsentencia := vvsentencia || ' and cod_mod = :p1_mod AND mar_fij = :p1_mar';
vvsentencia1 := NVL(vvsentencia1, '') || ' and (cod_isin in null or cod_isin = :p1_isin) ';
IF p_cod_fon = 'IF' THEN
IF p1_met_val <> 5 THEN
vvsentencia1 := NVL(vvsentencia1, '') || ' AND cod_mon = :p1_cod_mon ';
END IF;
ELSE
vvsentencia1 := NVL(vvsentencia1, '') || ' AND cod_mon = :p1_cod_mon ';
END IF;
IF p1_fec_ven IS NOT NULL AND p1_met_val <> 5 THEN
vvsentencia1 := NVL(vvsentencia1, '')
|| ' AND (fec_ven is null or fec_ven = :p1_fec_ven) ';
END IF;
vvsentencia1 := NVL(vvsentencia1, '') || ' and (serie is null or serie = :p1_ser) ';
vvsentencia2 := NVL(vvsentencia2, '') || ';end;';
DBMS_SQL.parse(
vncursor, vvcampos || vvsentencia || vvsentencia1 || vvsentencia2,
DBMS_SQL.native
); --
DBMS_SQL.bind_variable(vncursor, ':vari', v_ret);
DBMS_SQL.bind_variable(vncursor, ':p1_cod_emi', p1_cod_emi);
DBMS_SQL.bind_variable(vncursor, ':p1_cod_ins', p1_cod_ins);
DBMS_SQL.bind_variable(vncursor, ':p1_mod', p1_mod);
DBMS_SQL.bind_variable(vncursor, ':p1_mar', TO_CHAR(p1_mar));
DBMS_SQL.bind_variable(vncursor, ':p1_isin', p1_isin);
IF p_cod_fon = 'IF' THEN
IF p1_met_val <> 5 THEN
DBMS_SQL.bind_variable(vncursor, ':p1_cod_mon', p1_cod_mon);
END IF;
ELSE
DBMS_SQL.bind_variable(vncursor, ':p1_cod_mon', p1_cod_mon);
END IF;
IF p1_fec_ven IS NOT NULL AND p1_met_val <> 5 THEN
DBMS_SQL.bind_variable(vncursor, ':p1_fec_ven', p1_fec_ven);
END IF;
DBMS_SQL.bind_variable(vncursor, ':p1_ser', p1_ser);
BEGIN
vnexecute := DBMS_SQL.EXECUTE(vncursor);
DBMS_SQL.variable_value(vncursor, ':vari', v_ret);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_ret := 'N';
WHEN TOO_MANY_ROWS THEN
v_ret := 'S';
--WHEN OTHERS THEN v_ret := 'N';
END;
DBMS_SQL.close_cursor(vncursor);
END;

Sin embargo he identificado que el problema son con las variables
p1_ser VARCHAR2(100) := 'FIFCO200403E';
p1_isin VARCHAR2(100) := 'CRFIFCOB0162';
en este momento estoy usando esos valores, sin embargo el problema se me presenta con algunos valores no con todos, por eso es que se me hace tan dificil identificarlo.

No se si existira alguna forma de identificar puntualmente el error.

Agradezco de antemano su ayuda.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 2 2011
Added on Aug 4 2011
1 comment
575 views