Cursor dinamico - Converte varchar em long automatico

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Moloukos
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 54
Registrado em: Qui, 18 Set 2008 10:22 pm
Localização: São Paulo - SP
Moloukos Rox

Boa tarde.

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:

Selecionar tudo

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);
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Dá qual erro?
E onde exatamente dá o erro?
Moloukos
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 54
Registrado em: Qui, 18 Set 2008 10:22 pm
Localização: São Paulo - SP
Moloukos Rox

Resolvido.

Dava erro no momento do parse.

DBMS_SQL.PARSE(V_CURID, V_SQL, DBMS_SQL.NATIVE);

Revisei todo o código e encontrei uma conversão que ele fazia errado.

Obrigado.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 24 visitantes