Estou com um problema onde tenho um cursor dinâmico e em determinado momento ele converte a variavel de varchar2 para long(pois a query é grande) e quando eu faço o parse disso da erro.
alguém sabe como contornar isso?
Esta é a estrutura:
declare
V_SQL VARCHAR2(32767) := '';
begin
V_SQL := ' SELECT C.ID_MA,
C.VL_MA
FROM CAT.TB_MA C
WHERE C.ID_ST NOT IN (2,4) '||CHR(10);
V_SQL := V_SQL || 'AND C.ID_MA = :P_ID_MA'||CHR(10);
IF T_BITE = 1 THEN
V_SQL := V_SQL || 'AND (EXISTS '||CHR(10);
V_SQL := V_SQL || '(SELECT 1 '||CHR(10);
V_SQL := V_SQL || 'FROM CAT.TB_EMI EMI '||CHR(10);
V_SQL := V_SQL || 'WHERE EMI.ID_MA = C.ID_MA '||CHR(10);
V_SQL := V_SQL || ' AND EMI.ID_EMI = :P_ID_EMI )'||CHR(10);
V_CONTROLE := 1;
END IF;
.
.
.
.
etc......
V_SQL := V_SQL || ')';
V_CURID := DBMS_SQL.OPEN_CURSOR;
-- ANALISE DO CURSOR
DBMS_SQL.PARSE(V_CURID, V_SQL, DBMS_SQL.NATIVE);