Find Names SQL objects in Java code

Forum destinado a Linguagem JAVA! Classes, orientação a objeto, conexão com banco, chamada de procedures, etc
Post Reply
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Posts: 128
Joined: Sat, 18 Nov 2006 11:51 am
Location: Rio de Janeiro - RJ

Dear:

In PL / SQL we can even find which procedures do insert at a certain table.

Now in thousands of Java code lines, such as solving a simple question:

"I want a list containing the names of the tables and objects" executable " (procedures, FUNCTIONS) that are used. "

Note that we can have a Java code even decent, but we can also have indecent. In short:

will always exist somewhere in the Java code written something "... SELECT * from name_tabela ..." or ... "Proc_x" ... [

very complicated?

grateful,

Renato
User avatar
stcoutinho
Moderador
Moderador
Posts: 850
Joined: Wed, 11 May 2011 5:15 pm
Location: são Paulo - SP

Hi Renato,

Maybe here I'm exaggerating, but you could do the following:

1) Create a table (tbl_cod_java) with two fields:
NO_CLASS_JAVA VARCHAR2 (100)
NURO_LINHA Number (4),
TE_JAVA VARCHAR2 (4000)
2) Extract all of your Java codes into text files;
3) With the help of an Excel, mount a folder with 3 columns. Add the Java text on the 3rd column, the name of the Java class in the 1st column. Place the number of the line on the 2nd. Export the file as CSV (text, delimited);
3) Import all these Java codes into step table 1. Use SQL * Loader if applicable
4) Make Join Queries between this table and the Data Dictionary. Connect as the Owner of the tables and objects accessed by your Java code:
Ex:

Select all

           SELECT A.NO_CLASSE_JAVA 
                       A.NU_LINHA, 
                       A.TE_JAVA 
            FROM TBL_COD_JAVA A, 
                      USER_TABLES  B 
           WHERE UPPER(TE_JAVA) LIKE '%'||B.TABLE_NAME||'%'
5) You can make multiple joins: with User_Tables, User_Secy, User_Views, etc.

It may seem like a Lusitana idea, but the thick way is how you create a kind of data dictionary for your Java codes, just as the user_source for the PL / SQL code.

If you do not want to do this, maybe you should be monitoring the SQL session that would be accessed by this Java code and auditing the commands. Type, make your Java code connect with a specific user and monitor all commands running on the bank by this user.

Maybe forists have another idea better for your problem.

Hugs and good luck,

Sergio Coutinho
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Posts: 128
Joined: Sat, 18 Nov 2006 11:51 am
Location: Rio de Janeiro - RJ

Coutinho: I'll try. I'll talk to the Java programmer to get the best way to get this text file where the Java source would be.

Thanks
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Posts: 128
Joined: Sat, 18 Nov 2006 11:51 am
Location: Rio de Janeiro - RJ

Coutinho:

I followed your suggestion and did a WH_JAVA_XREF procedure that is an output.

See why you think.

Select all

 
create or replace procedure who_java_xref 
( 
 XPsenha in out varchar2 
 ) 
as 
 
PRAGMA AUTONOMOUS_TRANSACTION; 
 
--*==================================================================== 
--* Procedure..:  who_java_xref 
--* Descricao..:  Atualiza a Tabela Z_JAVA_SQL_XREF com as referências cruzadas 
--*               das Tabelas 
--*               USER_TABLE, user_views, user_mviews, user_sequences, 
--*               USER_SYNONYMS, 
--*               USER_PROCEDURES, 
--*               além de COMANDOS SQL, incluindo classes JPA Provider, 
--*               e rastreamento classes Action pelo cruzamento com a Tabela 
--*               Z_ROTINAS que abrigam as URLs das EAPs. 
--* 
--*               É um PRAGMA AUTONOMOUS_TRANSACTION onde seu commit não 
--*               interfere na lógica de nenhuma outra aplicação. 
--*               IMPORTANTE: 
--*               ========== 
--*                
--*               Existe apenas um parâmetro de senha de execução (IN/OUT). 
--*               Existe uma aplicação JAVA que recebe o(s) Diretório(s) à partir  
--*               do(s) qual(ais) serão extraídos TODOS os arquivos FONTE (.java; .xml) 
--*               fazendo INSERT na Tabela Z_JAVA_SQL_XREF removendo duplicidade pela chave: 
--* 
--*               NMARQJAV - Nome do Arquivo JAVA (contem todo o path do arquivo C:\...\....java) 
--* 
--*               A outra componente da chave, NRLIN, fica como segurança da aplicação JAVA e  
--*               como facilitador de ordenação do fonte JAVA. 
--*              
--*               Por segurança o reset na Z_JAVA_SQL_XREF (Delete) é feito manualmente quando se 
--*               desejar "refazer" o XREF devido o acúmulo de manutenções nas estruturas SQL e/ou 
--*               nos fontes JAVA. 
--* 
--*               Ao final com o comando SQL abaixo é extraida uma Planilha Excel com as referências 
--*               SQL presentes nos fontes JAVA permitindo um rastreamento simples por Auto-Filtro. 
--* 
--*               Select * from Z_JAVA_SQL_XREF where  
--*               RCTABVIESEQ is not null or 
--*               RCPROFUN    is not null or 
--*               RCSQLCMD    is not null or 
--*               RCSYN       is not null or  
--*               RCCLAJPA    is not null or 
--*               RCCLAACT    is not null; 
--*                 
--*               Z_JAVA_SQL_XREF 
--* 
--*               NMARQJAV	VARCHAR2(2048) 
--*               NRLIN	NUMBER(8) 
--*               DCLIN	VARCHAR2(2048) 
--*               RCTABVIESEQ	VARCHAR2(2048) 
--*               RCPROFUN	VARCHAR2(2048) 
--*               RCSQLCMD	VARCHAR2(2048) 
--*               RCSYN	VARCHAR2(2048) 
--*               RCCLAJPA	VARCHAR2(2048) 
--*               RCCLAACT	VARCHAR2(2048) 
--*                 
--* Revisões...:  Criacao da Procedure 
--* Data.......:  22/08/2013 
--* Autor .....:  Renato Viana 
--* Revisões...: 
--* Data.......: 
--* Autor Rev..: 
--*===================================================================== 
   
  XPfetchs    number(8); 
  XPTAGROWID  ROWID; 
  XPNMTAB     VARCHAR2(20); 
  XP_já_OUT   VARCHAR2(2048); 
  XPEXCLEN    VARCHAR2(20); 
  XPEXCOK     VARCHAR2(20); 
   
------------ "Record Fetch" Cursor 
XNMOBJ        VARCHAR2(256); 
Xnmarqjav     VARCHAR2(2048);  
Xnrlin        NUMBER(8);  
Xdclin        VARCHAR2(2048);  
Xrctabvieseq  VARCHAR2(2048);  
Xrcprofun     VARCHAR2(2048);  
Xrcsqlcmd     VARCHAR2(2048);  
Xrcsyn        VARCHAR2(2048);  
Xrcclajpa     VARCHAR2(2048);  
Xrcclaact     VARCHAR2(2048); 
Xrowid        ROWID; 
   
------------ Cursores    
 
 
cursor sqlTABLES is 
SELECT  
B.TABLE_NAME, 
A.nmarqjav,  
A.nrlin,  
A.dclin,  
A.rctabvieseq,  
A.rcprofun,  
A.rcsqlcmd,  
A.rcsyn,  
A.rcclajpa,  
A.rcclaact, 
A.rowid 
 
FROM Z_JAVA_SQL_XREF A, 
USER_TABLES B 
WHERE A.DCLIN is not null 
AND UPPER(A.DCLIN) LIKE '%'||B.TABLE_NAME||'%' 
 
order by a.nmarqjav, a.nrlin; 
 
cursor sqlVIEW is 
SELECT  
B.VIEW_NAME, 
A.nmarqjav,  
A.nrlin,  
A.dclin,  
A.rctabvieseq,  
A.rcprofun,  
A.rcsqlcmd,  
A.rcsyn,  
A.rcclajpa,  
A.rcclaact, 
A.rowid 
 
FROM Z_JAVA_SQL_XREF A, 
user_views B 
WHERE A.DCLIN is not null 
AND UPPER(A.DCLIN) LIKE '%'||B.VIEW_NAME||'%' 
order by a.nmarqjav, a.nrlin; 
 
cursor sqlMVIEW is 
SELECT  
B.MVIEW_NAME, 
A.nmarqjav,  
A.nrlin,  
A.dclin,  
A.rctabvieseq,  
A.rcprofun,  
A.rcsqlcmd,  
A.rcsyn,  
A.rcclajpa,  
A.rcclaact, 
A.rowid 
 
FROM Z_JAVA_SQL_XREF A, 
user_mviews B 
WHERE A.DCLIN is not null 
AND UPPER(A.DCLIN) LIKE '%'||B.MVIEW_NAME||'%' 
order by a.nmarqjav, a.nrlin; 
 
cursor sqlSEQUENCES is 
SELECT  
B.SEQUENCE_NAME, 
A.nmarqjav,  
A.nrlin,  
A.dclin,  
A.rctabvieseq,  
A.rcprofun,  
A.rcsqlcmd,  
A.rcsyn,  
A.rcclajpa,  
A.rcclaact, 
A.rowid 
 
FROM Z_JAVA_SQL_XREF A, 
user_sequences B 
WHERE A.DCLIN is not null 
AND UPPER(A.DCLIN) LIKE '%'||B.SEQUENCE_NAME||'%' 
order by a.nmarqjav, a.nrlin; 
 
cursor sqlSYNONYMS is 
SELECT  
B.SYNONYM_NAME, 
A.nmarqjav,  
A.nrlin,  
A.dclin,  
A.rctabvieseq,  
A.rcprofun,  
A.rcsqlcmd,  
A.rcsyn,  
A.rcclajpa,  
A.rcclaact, 
A.rowid 
 
FROM Z_JAVA_SQL_XREF A, 
USER_SYNONYMS B 
WHERE A.DCLIN is not null 
AND UPPER(A.DCLIN) LIKE '%'||B.SYNONYM_NAME||'%' 
order by a.nmarqjav, a.nrlin; 
 
cursor sqlPROCEDURES is 
SELECT  
B.object_name, 
A.nmarqjav,  
A.nrlin,  
A.dclin,  
A.rctabvieseq,  
A.rcprofun,  
A.rcsqlcmd,  
A.rcsyn,  
A.rcclajpa,  
A.rcclaact, 
A.rowid 
 
 
FROM Z_JAVA_SQL_XREF A, 
USER_PROCEDURES B 
WHERE A.DCLIN is not null 
AND B.PROCEDURE_NAME is null 
AND   UPPER(A.DCLIN) LIKE '%'||B.object_name||'%' 
order by a.nmarqjav, a.nrlin; 
 
 
 
cursor sqlCLAJPA is 
SELECT 
A.rctabvieseq,  
A.nmarqjav,  
A.nrlin,  
A.dclin,  
A.rctabvieseq,  
A.rcprofun,  
A.rcsqlcmd,  
A.rcsyn,  
A.rcclajpa,  
A.rcclaact, 
A.rowid 
 
FROM Z_JAVA_SQL_XREF A 
 
 
WHERE A.DCLIN is not null 
AND a.rcclajpa is null 
AND UPPER(a.dclin) LIKE '%@%.CLASS%TABLE%' 
order by a.nmarqjav, a.nrlin; 
 
cursor sqlCKCLAJPA is 
SELECT 
B.rcclajpa, 
A.nmarqjav,  
A.nrlin,  
A.dclin,  
B.rctabvieseq,  
A.rcprofun,  
A.rcsqlcmd,  
B.rcsyn,  
A.rcclajpa,  
A.rcclaact, 
A.rowid 
 
FROM Z_JAVA_SQL_XREF A, 
(SELECT rcclajpa, rctabvieseq, rcsyn from Z_JAVA_SQL_XREF 
WHERE rcclajpa is not null) B 
 
WHERE A.DCLIN is not null 
AND a.rcclajpa is null 
AND UPPER(a.dclin) LIKE '%'||UPPER(B.rcclajpa)||'%' 
order by a.nmarqjav, a.nrlin; 
 
cursor sqlCLAACT is 
SELECT 
B.dcrot, 
A.nmarqjav,  
A.nrlin,  
A.dclin,  
A.rctabvieseq,  
A.rcprofun,  
A.rcsqlcmd,  
A.rcsyn,  
A.rcclajpa,  
A.rcclaact, 
A.rowid 
 
FROM Z_JAVA_SQL_XREF A, 
(select * from z_classeaction) B 
 
WHERE A.DCLIN is not null 
AND a.rcclaact is null 
AND UPPER(a.dclin) LIKE '%'||UPPER(B.CLASSEACTION)||'%' 
order by a.nmarqjav, a.nrlin; 
 
cursor sqlJPACOMMANDS is 
SELECT  
B.SQL_COMMAND, 
A.nmarqjav,  
A.nrlin,  
A.dclin,  
A.rctabvieseq,  
A.rcprofun,  
A.rcsqlcmd,  
A.rcsyn,  
A.rcclajpa,  
A.rcclaact, 
A.rowid 
 
 
FROM Z_JAVA_SQL_XREF A, 
Z_JPACOMMANDS B 
WHERE A.DCLIN is not null 
AND A.rcclajpa is not null 
AND   UPPER(A.DCLIN) LIKE '%'||B.JPACOMMANDS_NAME||'%' 
order by a.nmarqjav, a.nrlin; 
 
cursor sqlCOMMANDS is 
SELECT  
B.SQL_COMMAND, 
A.nmarqjav,  
A.nrlin,  
A.dclin,  
A.rctabvieseq,  
A.rcprofun,  
A.rcsqlcmd,  
A.rcsyn,  
A.rcclajpa,  
A.rcclaact, 
A.rowid 
 
 
FROM Z_JAVA_SQL_XREF A, 
Z_SQLCOMMANDS B 
WHERE A.DCLIN is not null 
AND A.rcclajpa is null 
AND   UPPER(A.DCLIN) LIKE '%'||B.SQL_COMMAND||'%' 
order by a.nmarqjav, a.nrlin; 
 
-------- já existindo informação agrega com vírgula, além de impedir duplicidade 
FUNCTION Z_já_XNMOBJ( 
  XZ_já_OLD IN VARCHAR2, 
  XZ_já_NEW IN VARCHAR2 ) 
   RETURN VARCHAR2 AS 
   XZ_já_OUT VARCHAR2(2048); 
     BEGIN 
      
     if XZ_já_OLD is null then 
       RETURN XZ_já_NEW; 
     end if; 
        
     if XZ_já_NEW is null then 
       RETURN XZ_já_OLD; 
     end if; 
      
         
     XZ_já_OUT := XZ_já_OLD || ',' || XZ_já_NEW; 
     RETURN XZ_já_OUT; 
      
     EXCEPTION 
     WHEN OTHERS THEN 
          XPEXCLEN := 'OBJ LENGTH > '|| XPNMTAB; 
          RETURN XZ_já_OLD; 
           
    END Z_já_XNMOBJ; 
 
-------- Informação ObjectSQL User_Tables realmente corresponde ao LIKE % 
FUNCTION Z_OK_XNMOBJ ( 
  XZ_OK_DCLIN IN VARCHAR2, 
  XZ_OK_XNMOBJ IN VARCHAR2 ) 
   RETURN BOOLEAN AS 
   XZ_OK_EXISTE NUMBER := 0; 
   XZ_OK_ONDE   NUMBER := 1; 
   XZ_OK_VEZ    NUMBER := 1; 
   XZ_OK_FIM    NUMBER := 1; 
   XZ_OK_LEN    NUMBER := 0; 
 
     BEGIN 
      
     if XZ_OK_DCLIN is null 
     or XZ_OK_XNMOBJ is null then 
       RETURN FALSE; 
     end if; 
        
     if length(XZ_OK_XNMOBJ) > length(XZ_OK_DCLIN) then 
       RETURN FALSE; 
     end if; 
      
     XZ_OK_FIM := length(XZ_OK_DCLIN); 
     XZ_OK_LEN := length(XZ_OK_XNMOBJ); 
      
      
     LOOP 
        
       XZ_OK_ONDE := INSTR(UPPER(XZ_OK_DCLIN),XZ_OK_XNMOBJ,XZ_OK_ONDE,XZ_OK_VEZ); 
       IF XZ_OK_ONDE > 0 THEN 
         IF (XZ_OK_ONDE + XZ_OK_LEN - 1) = XZ_OK_FIM  
          OR XZ_OK_XNMOBJ || ' ' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1)) 
          OR XZ_OK_XNMOBJ || '"' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1)) 
          OR XZ_OK_XNMOBJ || '''' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1))    
          OR XZ_OK_XNMOBJ || ',' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1))   
          OR XZ_OK_XNMOBJ || ';' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1)) 
          OR XZ_OK_XNMOBJ || ')' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1)) 
          OR XZ_OK_XNMOBJ || '(' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1)) 
         THEN 
           XZ_OK_EXISTE := 1; 
           RETURN TRUE; 
         ELSE 
           XZ_OK_VEZ := 2; 
         END IF; 
       ELSE 
         XZ_OK_EXISTE := 0; 
         RETURN FALSE; 
       END IF;   
        
     END LOOP; 
   
     RETURN FALSE;         
          
     EXCEPTION 
     WHEN OTHERS THEN 
          XPEXCOK := 'EXCEP OK OBJ ' || XPNMTAB; 
          RETURN FALSE; 
           
    END Z_OK_XNMOBJ;  
 
     
begin 
 
If XPsenha <> 'pass69' then 
   XPsenha := 'Err pass'; 
   return; 
end if; 
 
--- Remove e Recria Tabelas Básicas de Classe Action e Commands SQL 
--- =============================================================== 
delete z_classeaction; 
--- A tabela z_classeaction 
--- Aqui Z_ROTINAS corresponde a uma tabela do Sistema em que se faz XREF contendo colunas: 
--- DCURLROT = Descrição URL da Rotina que contem path da rotina JAVA que liga um Menu Web 
---            responsável pelo "disparo" das funcionalidades (Action) e que normalmente são 
---            utilizados no nome das demais classes diretamente ligadas a funcionalida; 
--- IDSIS    = Identificador do Sistema em que se faz XREF; 
--- DCROT    = Descrição da Rotina Funcional (ID da EAP). 
insert into z_classeaction  
(CLASSEACTION, DCURLROT, DCROT) 
(select  
case 
when INSTR(Z_GET_FILENAME(SUBSTR(dcurlrot,1,(INSTR(dcurlrot,'.do?evento',-1,1)-1))),'man') > 0  
then   
   
SUBSTR(Z_GET_FILENAME(SUBSTR(dcurlrot,1,(INSTR(dcurlrot,'.do?evento',-1,1)-1))),1, 
(INSTR((Z_GET_FILENAME(SUBSTR(dcurlrot,1,(INSTR(dcurlrot,'.do?evento',-1,1)-1)))),'man',-1,1)-1)) 
 
else 
   
Z_GET_FILENAME(SUBSTR(dcurlrot,1,(INSTR(dcurlrot,'.do?evento',-1,1)-1))) 
 
end AS CLASSEACTION 
,dcurlrot 
,dcrot from Z_ROTINAS where dcurlrot is not null 
 and idsis = 36 
 and dcurlrot like '%?evento%' 
 ); 
commit;  
 
--- Outras Tabelas Mencionadas nos Cursores: 
--- ======================================= 
--- Estas tabelas não são removidas ou recriadas aqui neste código. 
--- Elas são mantidas externamente em função das necessidades de rastreamento. 
--- 
--- Z_JPACOMMANDS 
---  
--- JPACOMMANDS_NAME  SQLCOMMAND 
--- ================  ========== 
--- .UPDATE         	UPDATE 
--- .MERGE	          UPDATE 
--- .SAVE   	        UPDATE 
--- .PERSIST        	UPDATE 
--- .DELETE 	        DELETE 
--- 
--- Z_SQLCOMMANDS 
--- 
--- SQL_COMMAND 
--- =========== 
--- CREATE 
--- DELETE 
--- DROP 
--- GRANT 
--- INSERT 
--- JOIN 
--- SELECT 
--- UNION 
--- UPDATE 
--- ALTER 
 
 
----- Begin Cursor TABLES 
XPNMTAB := 'sqlTABLES'; 
XPTAGROWID := null; 
XPfetchs := 0; 
XPsenha := 'Open ' || XPNMTAB; 
OPEN sqlTABLES;     
XPsenha := 'First Fetch ' || XPNMTAB; 
FETCH sqlTABLES INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
XPsenha := 'Question END ' || XPNMTAB; 
 
WHILE sqlTABLES%FOUND LOOP 
     
XPfetchs := XPfetchs + 1; 
XPsenha := 'Fetch ' || XPNMTAB || ' ' || XPfetchs; 
 
--- Verifica necessidade de Recuperação Fecth devido a um possível UPDATE 
if XPTAGROWID = Xrowid then 
XPsenha := 'Select ' || XPNMTAB || ' ' || XPfetchs;   
SELECT rctabvieseq  
INTO  Xrctabvieseq 
FROM Z_JAVA_SQL_XREF 
WHERE ROWID = Xrowid; 
end if; 
 
--- Verifica se o OBJ é Realmente Válido 
IF Z_OK_XNMOBJ(Xdclin,XNMOBJ) THEN 
 
--- O novo objeto OK, JÁ existindo na(s) SAÍDA(s), ou seja, no(s) XP_já_OUT, 
--- significa que NÃO DEVE NOVAMENTE SER ADICIONADO evitando duplicidade. 
      
IF NOT Z_OK_XNMOBJ(Xrctabvieseq,XNMOBJ) THEN 
 
 
XP_já_OUT := Z_já_XNMOBJ(Xrctabvieseq,XNMOBJ); 
XPsenha := 'Update ' || XPNMTAB || ' ' || XPfetchs; 
   
UPDATE Z_JAVA_SQL_XREF 
SET rctabvieseq = XP_já_OUT 
WHERE ROWID = Xrowid; 
 
END IF; 
 
--- Guarda Rowid para teste de Recuperação Fetch após UPDATE 
XPTAGROWID := Xrowid; 
 
 
END IF; 
 
FETCH sqlTABLES INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
END LOOP; 
XPsenha := 'COMMIT ' || XPNMTAB; 
COMMIT; 
XPsenha := 'Close ' || XPNMTAB; 
CLOSE sqlTABLES;  
----- END Cursor TABLES 
 
 
----- Begin Cursor VIEW 
XPNMTAB := 'sqlVIEW'; 
XPTAGROWID := null; 
XPfetchs := 0; 
XPsenha := 'Open ' || XPNMTAB; 
OPEN sqlVIEW;     
XPsenha := 'First Fetch ' || XPNMTAB; 
FETCH sqlVIEW INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
XPsenha := 'Question END ' || XPNMTAB; 
 
WHILE sqlVIEW%FOUND LOOP 
 
XPfetchs := XPfetchs + 1; 
XPsenha := 'Fetch ' || XPNMTAB || ' ' || XPfetchs; 
 
--- Verifica necessidade de Recuperação Fecth devido a um possível UPDATE 
if XPTAGROWID = Xrowid then 
XPsenha := 'Select ' || XPNMTAB || ' ' || XPfetchs;   
SELECT rctabvieseq  
INTO  Xrctabvieseq 
FROM Z_JAVA_SQL_XREF 
WHERE ROWID = Xrowid; 
end if; 
 
--- Verifica se o OBJ é Realmente Válido 
IF Z_OK_XNMOBJ(Xdclin,XNMOBJ) THEN 
 
--- O novo objeto OK, JÁ existindo na(s) SAÍDA(s), ou seja, no(s) XP_já_OUT, 
--- significa que NÃO DEVE NOVAMENTE SER ADICIONADO evitando duplicidade. 
      
IF NOT Z_OK_XNMOBJ(Xrctabvieseq,XNMOBJ) THEN 
 
 
XP_já_OUT := Z_já_XNMOBJ(Xrctabvieseq,XNMOBJ); 
XPsenha := 'Update ' || XPNMTAB || ' ' || XPfetchs; 
   
UPDATE Z_JAVA_SQL_XREF 
SET rctabvieseq = XP_já_OUT 
WHERE ROWID = Xrowid; 
 
END IF; 
 
--- Guarda Rowid para teste de Recuperação Fetch após UPDATE 
XPTAGROWID := Xrowid; 
 
 
END IF; 
 
FETCH sqlVIEW INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
END LOOP; 
XPsenha := 'COMMIT ' || XPNMTAB; 
COMMIT; 
XPsenha := 'Close ' || XPNMTAB; 
CLOSE sqlVIEW;  
----- END Cursor VIEW 
  
 
----- Begin Cursor MVIEW (O uso deste cursor pode ser dispensado quando TABLES o contiver) 
XPNMTAB := 'sqlMVIEW'; 
XPTAGROWID := null; 
XPfetchs := 0; 
XPsenha := 'Open ' || XPNMTAB; 
OPEN sqlMVIEW;     
XPsenha := 'First Fetch ' || XPNMTAB; 
FETCH sqlMVIEW INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
XPsenha := 'Question END ' || XPNMTAB; 
 
WHILE sqlMVIEW%FOUND LOOP 
   
XPfetchs := XPfetchs + 1; 
XPsenha := 'Fetch ' || XPNMTAB || ' ' || XPfetchs; 
 
--- Verifica necessidade de Recuperação Fecth devido a um possível UPDATE 
if XPTAGROWID = Xrowid then 
XPsenha := 'Select ' || XPNMTAB || ' ' || XPfetchs;   
SELECT rctabvieseq  
INTO  Xrctabvieseq 
FROM Z_JAVA_SQL_XREF 
WHERE ROWID = Xrowid; 
end if; 
 
--- Verifica se o OBJ é Realmente Válido 
IF Z_OK_XNMOBJ(Xdclin,XNMOBJ) THEN 
 
--- O novo objeto OK, JÁ existindo na(s) SAÍDA(s), ou seja, no(s) XP_já_OUT, 
--- significa que NÃO DEVE NOVAMENTE SER ADICIONADO evitando duplicidade. 
      
IF NOT Z_OK_XNMOBJ(Xrctabvieseq,XNMOBJ) THEN 
 
 
XP_já_OUT := Z_já_XNMOBJ(Xrctabvieseq,XNMOBJ); 
XPsenha := 'Update ' || XPNMTAB || ' ' || XPfetchs; 
   
UPDATE Z_JAVA_SQL_XREF 
SET rctabvieseq = XP_já_OUT 
WHERE ROWID = Xrowid; 
 
END IF; 
 
--- Guarda Rowid para teste de Recuperação Fetch após UPDATE 
XPTAGROWID := Xrowid; 
 
 
END IF; 
 
FETCH sqlMVIEW INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
END LOOP; 
XPsenha := 'COMMIT ' || XPNMTAB; 
COMMIT; 
XPsenha := 'Close ' || XPNMTAB; 
CLOSE sqlMVIEW;  
----- END Cursor MVIEW 
 
 
----- Begin Cursor sqlSEQUENCES 
XPNMTAB := 'sqlSEQUENCES'; 
XPTAGROWID := null; 
XPfetchs := 0; 
XPsenha := 'Open ' || XPNMTAB; 
OPEN sqlSEQUENCES;     
XPsenha := 'First Fetch ' || XPNMTAB; 
FETCH sqlSEQUENCES INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
XPsenha := 'Question END ' || XPNMTAB; 
 
WHILE sqlSEQUENCES%FOUND LOOP 
 
XPfetchs := XPfetchs + 1; 
XPsenha := 'Fetch ' || XPNMTAB || ' ' || XPfetchs; 
 
--- Verifica necessidade de Recuperação Fecth devido a um possível UPDATE 
if XPTAGROWID = Xrowid then 
XPsenha := 'Select ' || XPNMTAB || ' ' || XPfetchs;   
SELECT rctabvieseq  
INTO  Xrctabvieseq 
FROM Z_JAVA_SQL_XREF 
WHERE ROWID = Xrowid; 
end if; 
 
--- Verifica se o OBJ é Realmente Válido 
IF Z_OK_XNMOBJ(Xdclin,XNMOBJ) THEN 
 
--- O novo objeto OK, JÁ existindo na(s) SAÍDA(s), ou seja, no(s) XP_já_OUT, 
--- significa que NÃO DEVE NOVAMENTE SER ADICIONADO evitando duplicidade. 
      
IF NOT Z_OK_XNMOBJ(Xrctabvieseq,XNMOBJ) THEN 
 
 
XP_já_OUT := Z_já_XNMOBJ(Xrctabvieseq,XNMOBJ); 
XPsenha := 'Update ' || XPNMTAB || ' ' || XPfetchs; 
   
UPDATE Z_JAVA_SQL_XREF 
SET rctabvieseq = XP_já_OUT 
WHERE ROWID = Xrowid; 
 
END IF; 
 
--- Guarda Rowid para teste de Recuperação Fetch após UPDATE 
XPTAGROWID := Xrowid; 
 
 
END IF; 
 
FETCH sqlSEQUENCES INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
END LOOP; 
XPsenha := 'COMMIT ' || XPNMTAB; 
COMMIT; 
XPsenha := 'Close ' || XPNMTAB; 
CLOSE sqlSEQUENCES;  
----- END Cursor sqlSEQUENCES 
 
 
----- Begin Cursor sqlSYNONYMS 
XPNMTAB := 'sqlSYNONYMS'; 
XPTAGROWID := null; 
XPfetchs := 0; 
XPsenha := 'Open ' || XPNMTAB; 
OPEN sqlSYNONYMS;     
XPsenha := 'First Fetch ' || XPNMTAB; 
FETCH sqlSYNONYMS INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
XPsenha := 'Question END ' || XPNMTAB; 
 
WHILE sqlSYNONYMS%FOUND LOOP 
 
XPfetchs := XPfetchs + 1; 
XPsenha := 'Fetch ' || XPNMTAB || ' ' || XPfetchs; 
 
--- Verifica necessidade de Recuperação Fecth devido a um possível UPDATE 
if XPTAGROWID = Xrowid then 
XPsenha := 'Select ' || XPNMTAB || ' ' || XPfetchs;   
SELECT rcsyn  
INTO  Xrcsyn 
FROM z_java_sql_xref 
WHERE ROWID = Xrowid; 
end if; 
 
--- Verifica se o OBJ é Realmente Válido 
IF Z_OK_XNMOBJ(Xdclin,XNMOBJ) THEN 
 
--- O novo objeto OK, JÁ existindo na(s) SAÍDA(s), ou seja, no(s) XP_já_OUT, 
--- significa que NÃO DEVE NOVAMENTE SER ADICIONADO evitando duplicidade. 
      
IF NOT Z_OK_XNMOBJ(Xrcsyn,XNMOBJ) THEN 
 
 
XP_já_OUT := Z_já_XNMOBJ(Xrcsyn,XNMOBJ); 
XPsenha := 'Update ' || XPNMTAB || ' ' || XPfetchs; 
   
UPDATE Z_JAVA_SQL_XREF 
SET rcsyn = XP_já_OUT 
WHERE ROWID = Xrowid; 
 
END IF; 
 
--- Guarda Rowid para teste de Recuperação Fetch após UPDATE 
XPTAGROWID := Xrowid; 
 
 
END IF; 
 
FETCH sqlSYNONYMS INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
END LOOP; 
XPsenha := 'COMMIT ' || XPNMTAB; 
COMMIT; 
XPsenha := 'Close ' || XPNMTAB; 
CLOSE sqlSYNONYMS;  
----- END Cursor sqlSYNONYMS 
 
 
----- Begin Cursor sqlPROCEDURES 
XPNMTAB := 'sqlPROCEDURES'; 
XPTAGROWID := null; 
XPfetchs := 0; 
XPsenha := 'Open ' || XPNMTAB; 
OPEN sqlPROCEDURES;     
XPsenha := 'First Fetch ' || XPNMTAB; 
FETCH sqlPROCEDURES INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
XPsenha := 'Question END ' || XPNMTAB; 
 
WHILE sqlPROCEDURES%FOUND LOOP 
 
XPfetchs := XPfetchs + 1; 
XPsenha := 'Fetch ' || XPNMTAB || ' ' || XPfetchs; 
 
--- Verifica necessidade de Recuperação Fecth devido a um possível UPDATE 
if XPTAGROWID = Xrowid then 
XPsenha := 'Select ' || XPNMTAB || ' ' || XPfetchs;   
SELECT rcprofun  
INTO  Xrcprofun 
FROM Z_JAVA_SQL_XREF 
WHERE ROWID = Xrowid; 
end if; 
 
--- Verifica se o OBJ é Realmente Válido 
IF Z_OK_XNMOBJ(Xdclin,XNMOBJ) THEN 
 
--- O novo objeto OK, JÁ existindo na(s) SAÍDA(s), ou seja, no(s) XP_já_OUT, 
--- significa que NÃO DEVE NOVAMENTE SER ADICIONADO evitando duplicidade. 
      
IF NOT Z_OK_XNMOBJ(Xrcprofun,XNMOBJ) THEN 
 
 
XP_já_OUT := Z_já_XNMOBJ(Xrcprofun,XNMOBJ); 
XPsenha := 'Update ' || XPNMTAB || ' ' || XPfetchs; 
   
UPDATE Z_JAVA_SQL_XREF 
SET rcprofun = XP_já_OUT 
WHERE ROWID = Xrowid; 
 
END IF; 
 
--- Guarda Rowid para teste de Recuperação Fetch após UPDATE 
XPTAGROWID := Xrowid; 
 
 
END IF; 
 
FETCH sqlPROCEDURES INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
END LOOP; 
XPsenha := 'COMMIT ' || XPNMTAB; 
COMMIT; 
XPsenha := 'Close ' || XPNMTAB; 
CLOSE sqlPROCEDURES;  
----- END Cursor sqlPROCEDURES 
 
 
 
----- Begin Cursor sqlCLAJPA 
XPNMTAB := 'sqlCLAJPA'; 
XPTAGROWID := null; 
XPfetchs := 0; 
XPsenha := 'Open ' || XPNMTAB; 
OPEN sqlCLAJPA;     
XPsenha := 'First Fetch ' || XPNMTAB; 
FETCH sqlCLAJPA INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
XPsenha := 'Question END ' || XPNMTAB; 
 
WHILE sqlCLAJPA%FOUND LOOP 
     
XPfetchs := XPfetchs + 1; 
XPsenha := 'Fetch ' || XPNMTAB || ' ' || XPfetchs; 
 
--- Verifica necessidade de Recuperação Fecth devido a um possível UPDATE 
if XPTAGROWID = Xrowid then 
XPsenha := 'Select ' || XPNMTAB || ' ' || XPfetchs;   
SELECT rcclajpa 
INTO  Xrcclajpa 
FROM Z_JAVA_SQL_XREF 
WHERE ROWID = Xrowid; 
end if; 
 
--- Verifica se o OBJ é Realmente Válido 
IF Z_OK_XNMOBJ(Xdclin,Xrctabvieseq)  
OR Z_OK_XNMOBJ(Xdclin,Xrcsyn) THEN 
 
--- Cria o OBJ JPA utilizando a nomenclatura do arquivo 
XNMOBJ := UPPER(Z_get_left_tag(z_get_filename(Xnmarqjav),'.')); 
 
--- O novo objeto OK, JÁ existindo na(s) SAÍDA(s), ou seja, no(s) XP_já_OUT, 
--- significa que NÃO DEVE NOVAMENTE SER ADICIONADO evitando duplicidade. 
      
IF NOT Z_OK_XNMOBJ(Xrcclajpa,XNMOBJ) THEN 
 
 
XP_já_OUT := Z_já_XNMOBJ(Xrcclajpa,XNMOBJ); 
XPsenha := 'Update ' || XPNMTAB || ' ' || XPfetchs; 
   
UPDATE Z_JAVA_SQL_XREF 
SET rcclajpa = XP_já_OUT 
WHERE ROWID = Xrowid; 
 
END IF; 
 
--- Guarda Rowid para teste de Recuperação Fetch após UPDATE 
XPTAGROWID := Xrowid; 
 
 
END IF; 
 
FETCH sqlCLAJPA INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
END LOOP; 
XPsenha := 'COMMIT ' || XPNMTAB; 
COMMIT; 
XPsenha := 'Close ' || XPNMTAB; 
CLOSE sqlCLAJPA;  
----- END Cursor sqlCLAJPA 
 
 
----- Begin Cursor sqlCKCLAJPA (Onde a CLAJPA montada anteriormente possui referencia) 
XPNMTAB := 'sqlCKCLAJPA'; 
XPTAGROWID := null; 
XPfetchs := 0; 
XPsenha := 'Open ' || XPNMTAB; 
OPEN sqlCKCLAJPA;     
XPsenha := 'First Fetch ' || XPNMTAB; 
FETCH sqlCKCLAJPA INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
XPsenha := 'Question END ' || XPNMTAB; 
 
WHILE sqlCKCLAJPA%FOUND LOOP 
   
XPfetchs := XPfetchs + 1; 
XPsenha := 'Fetch ' || XPNMTAB || ' ' || XPfetchs; 
 
--- Verifica necessidade de Recuperação Fecth devido a um possível UPDATE 
if XPTAGROWID = Xrowid then 
XPsenha := 'Select ' || XPNMTAB || ' ' || XPfetchs;   
SELECT rcclajpa  
INTO  Xrcclajpa 
FROM Z_JAVA_SQL_XREF 
WHERE ROWID = Xrowid; 
end if; 
 
--- Verifica se o OBJ é Realmente Válido 
IF Z_OK_XNMOBJ(Xdclin,XNMOBJ) THEN 
 
--- O novo objeto OK, JÁ existindo na(s) SAÍDA(s), ou seja, no(s) XP_já_OUT, 
--- significa que NÃO DEVE NOVAMENTE SER ADICIONADO evitando duplicidade. 
      
IF NOT Z_OK_XNMOBJ(Xrcclajpa,XNMOBJ) THEN 
 
 
XP_já_OUT := Z_já_XNMOBJ(Xrcclajpa,XNMOBJ); 
XPsenha := 'Update ' || XPNMTAB || ' ' || XPfetchs; 
   
UPDATE Z_JAVA_SQL_XREF 
SET rcclajpa = XP_já_OUT 
WHERE ROWID = Xrowid; 
 
END IF; 
 
--- Guarda Rowid para teste de Recuperação Fetch após UPDATE 
XPTAGROWID := Xrowid; 
 
 
END IF; 
 
FETCH sqlCKCLAJPA INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
END LOOP; 
XPsenha := 'COMMIT ' || XPNMTAB; 
COMMIT; 
XPsenha := 'Close ' || XPNMTAB; 
CLOSE sqlCKCLAJPA;  
----- END Cursor sqlCKCLAJPA 
 
<<CLASSE>> 
 
----- Begin Cursor sqlCLAACT 
XPNMTAB := 'sqlCLAACT'; 
XPTAGROWID := null; 
XPfetchs := 0; 
XPsenha := 'Open ' || XPNMTAB; 
OPEN sqlCLAACT;     
XPsenha := 'First Fetch ' || XPNMTAB; 
FETCH sqlCLAACT INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
XPsenha := 'Question END ' || XPNMTAB; 
 
WHILE sqlCLAACT%FOUND LOOP 
  
XPfetchs := XPfetchs + 1; 
XPsenha := 'Fetch ' || XPNMTAB || ' ' || XPfetchs; 
 
XNMOBJ := UPPER(XNMOBJ); 
--- Verifica necessidade de Recuperação Fecth devido a um possível UPDATE 
if XPTAGROWID = Xrowid then 
XPsenha := 'Select ' || XPNMTAB || ' ' || XPfetchs;   
SELECT rcclaact  
INTO  Xrcclaact 
FROM Z_JAVA_SQL_XREF 
WHERE ROWID = Xrowid; 
end if; 
 
--- NÃO Verifica se o OBJ é Realmente Válido  
--- === pois, aqui a finalidade é rastrear proximidade (LIKE) com a classe ACTION 
--- === além do que, o OBJ POSICIONADO é o ID DA EAP correlacionada a classe ACTION 
IF Z_OK_XNMOBJ(XNMOBJ,XNMOBJ) THEN 
 
--- O novo objeto OK, JÁ existindo na(s) SAÍDA(s), ou seja, no(s) XP_já_OUT, 
--- significa que NÃO DEVE NOVAMENTE SER ADICIONADO evitando duplicidade. 
      
IF NOT Z_OK_XNMOBJ(Xrcclaact,XNMOBJ) THEN 
 
 
XP_já_OUT := Z_já_XNMOBJ(Xrcclaact,XNMOBJ); 
XPsenha := 'Update ' || XPNMTAB || ' ' || XPfetchs; 
   
UPDATE Z_JAVA_SQL_XREF 
SET rcclaact = XP_já_OUT 
WHERE ROWID = Xrowid; 
 
END IF; 
 
--- Guarda Rowid para teste de Recuperação Fetch após UPDATE 
XPTAGROWID := Xrowid; 
 
 
END IF; 
 
FETCH sqlCLAACT INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
END LOOP; 
XPsenha := 'COMMIT ' || XPNMTAB; 
COMMIT; 
XPsenha := 'Close ' || XPNMTAB; 
CLOSE sqlCLAACT;  
----- END Cursor sqlCLAACT 
 
 
----- Begin Cursor sqlJPACOMMANDS 
XPNMTAB := 'sqlJPACOMMANDS'; 
XPTAGROWID := null; 
XPfetchs := 0; 
XPsenha := 'Open ' || XPNMTAB; 
OPEN sqlJPACOMMANDS;     
XPsenha := 'First Fetch ' || XPNMTAB; 
FETCH sqlJPACOMMANDS INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
XPsenha := 'Question END ' || XPNMTAB; 
 
WHILE sqlJPACOMMANDS%FOUND LOOP 
    
XPfetchs := XPfetchs + 1; 
XPsenha := 'Fetch ' || XPNMTAB || ' ' || XPfetchs; 
 
XNMOBJ := UPPER(XNMOBJ); 
--- Verifica necessidade de Recuperação Fecth devido a um possível UPDATE 
if XPTAGROWID = Xrowid then 
XPsenha := 'Select ' || XPNMTAB || ' ' || XPfetchs;   
SELECT rcsqlcmd 
INTO  Xrcsqlcmd 
FROM Z_JAVA_SQL_XREF 
WHERE ROWID = Xrowid; 
end if; 
 
--- NÃO Verifica se o OBJ é Realmente Válido  
--- === pois, aqui a finalidade é rastrear proximidade (LIKE) com a commands JPA 
--- === além do que, o OBJ POSICIONADO é um command SQL 
IF Z_OK_XNMOBJ(XNMOBJ,XNMOBJ) THEN 
 
--- O novo objeto OK, JÁ existindo na(s) SAÍDA(s), ou seja, no(s) XP_já_OUT, 
--- significa que NÃO DEVE NOVAMENTE SER ADICIONADO evitando duplicidade. 
      
IF NOT Z_OK_XNMOBJ(Xrcsqlcmd,XNMOBJ) THEN 
 
 
XP_já_OUT := Z_já_XNMOBJ(Xrcsqlcmd,XNMOBJ); 
XPsenha := 'Update ' || XPNMTAB || ' ' || XPfetchs; 
   
UPDATE Z_JAVA_SQL_XREF 
SET rcsqlcmd = XP_já_OUT 
WHERE ROWID = Xrowid; 
 
END IF; 
 
--- Guarda Rowid para teste de Recuperação Fetch após UPDATE 
XPTAGROWID := Xrowid; 
 
 
END IF; 
 
FETCH sqlJPACOMMANDS INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
END LOOP; 
XPsenha := 'COMMIT ' || XPNMTAB; 
COMMIT; 
XPsenha := 'Close ' || XPNMTAB; 
CLOSE sqlJPACOMMANDS;  
----- END Cursor sqlJPACOMMANDS 
 
 
----- Begin Cursor sqlCOMMANDS 
XPNMTAB := 'sqlCOMMANDS'; 
XPTAGROWID := null; 
XPfetchs := 0; 
XPsenha := 'Open ' || XPNMTAB; 
OPEN sqlCOMMANDS;     
XPsenha := 'First Fetch ' || XPNMTAB; 
FETCH sqlCOMMANDS INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
XPsenha := 'Question END ' || XPNMTAB; 
 
WHILE sqlCOMMANDS%FOUND LOOP 
    
XPfetchs := XPfetchs + 1; 
XPsenha := 'Fetch ' || XPNMTAB || ' ' || XPfetchs; 
 
--- Verifica necessidade de Recuperação Fecth devido a um possível UPDATE 
if XPTAGROWID = Xrowid then 
XPsenha := 'Select ' || XPNMTAB || ' ' || XPfetchs;   
SELECT rcsqlcmd 
INTO  Xrcsqlcmd 
FROM Z_JAVA_SQL_XREF 
WHERE ROWID = Xrowid; 
end if; 
 
--- Verifica se o OBJ é Realmente Válido 
IF Z_OK_XNMOBJ(Xdclin,XNMOBJ) THEN 
 
--- O novo objeto OK, JÁ existindo na(s) SAÍDA(s), ou seja, no(s) XP_já_OUT, 
--- significa que NÃO DEVE NOVAMENTE SER ADICIONADO evitando duplicidade. 
      
IF NOT Z_OK_XNMOBJ(Xrcsqlcmd,XNMOBJ) THEN 
 
 
XP_já_OUT := Z_já_XNMOBJ(Xrcsqlcmd,XNMOBJ); 
XPsenha := 'Update ' || XPNMTAB || ' ' || XPfetchs; 
   
UPDATE Z_JAVA_SQL_XREF 
SET rcsqlcmd = XP_já_OUT 
WHERE ROWID = Xrowid; 
 
END IF; 
 
--- Guarda Rowid para teste de Recuperação Fetch após UPDATE 
XPTAGROWID := Xrowid; 
 
 
END IF; 
 
FETCH sqlCOMMANDS INTO 
XNMOBJ 
,Xnmarqjav      
,Xnrlin         
,Xdclin         
,Xrctabvieseq   
,Xrcprofun      
,Xrcsqlcmd     
,Xrcsyn         
,Xrcclajpa      
,Xrcclaact      
,Xrowid; 
 
END LOOP; 
XPsenha := 'COMMIT ' || XPNMTAB; 
COMMIT; 
XPsenha := 'Close ' || XPNMTAB; 
CLOSE sqlCOMMANDS;  
----- END Cursor sqlCOMMANDS 
 
 
return; 
 
     EXCEPTION 
       WHEN OTHERS THEN 
         XPSENHA := XPSENHA || sqlerrm; 
         return; 
 
end; 
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Posts: 128
Joined: Sat, 18 Nov 2006 11:51 am
Location: Rio de Janeiro - RJ

Coutinho:

As now only missing the utility, on Desktop, Java to start from the supplied directory (s) Insert all Java fonts (.java; .xml) In the z_java_sql_xref table by feeding the NMARQJAV, NRLIN, and DCLIN columns.

Who knows, can not you confect it?

I attached a series of information about sequential files in ZIP.

A hug,

Renato Viana
Attachments
ORARQSEQ.rar
(1.18 MiB) Downloaded 980 times
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Posts: 128
Joined: Sat, 18 Nov 2006 11:51 am
Location: Rio de Janeiro - RJ

Coutinho:

I have already made the basic routine below. Then it was just adapting it to welcome names from all .java and .xml files from a directory.

A hug,

Renato Viana

Select all

import java.io.*; 
import java.sql.*; 
 
import javax.swing.JOptionPane; 
  
 
 
class FileToSQL{ 
 
public static void main(String args[]) { 
	Connection con = null; 
try { 
//----- Aqui adaptar pro BANCO DE DADOS ------ 
Class.forName("oracle.jdbc.driver.OracleDriver"); 
con = DriverManager.getConnection("jdbc:oracle:thin:@192.NNN.NNN.NNN:1521:ID_DO_SEU_BANCO","SEU_USUARIO","SUA_SENHA"); 
Statement stm = con.createStatement(); 
//---- 
 
// aqui preciso dos nomes completos alimentarem esta classe 
String arquivo1 = JOptionPane.showInputDialog("Entre com o nome do Arquivo a ser incluido"); 
BufferedReader reader = new BufferedReader(new FileReader(arquivo1));  
String dados[] = new String[3];  
int NRLIN = 0; // number(8) na tabela SQL 
 
// alguma coisa parecida para guardar o nome completo do arquivo para delete e insert 
dados[0] = arquivo1;  
stm.executeUpdate("delete Z_JAVA_SQL_XREF where NMARQJAV = '"+dados[0]+"' "); // a coluna pkey aqui é o nome do arquivo  
 
String linha = null; // reset na linha  
 
 
 
linha = reader.readLine(); // primeiro read da linha 
 
 
	while (linha != null) { // loop leitura das linhas até o fim 
	 
// ---- aqui pode fazer todos os tratamentos em cada linha preparando nas colunas da tabela 
		 
	NRLIN = NRLIN + 1; // é a coluna complemento da PKEY contendo o numero da linha 
	 
	stm.executeUpdate("insert into Z_JAVA_SQL_XREF (NMARQJAV,NRLIN,DCLIN) values ('"+dados[0]+"','"+NRLIN+"','"+linha+"')"); // inclusões 
	 
	linha = reader.readLine(); // leitura das demais linhas 
	} 
	 
	con.commit(); // ao fim faz commit 
	System.out.println(arquivo1 + " Arquivo importado"); 
	 
} 
catch (Exception e) { 
	if (con != null) { 
		try { 
			con.rollback(); // aqui se der qualquer problema faz rollback 
		} catch (SQLException e1) { 
			e1.printStackTrace(); 
		} 
	} 
System.err.println("Erro: " + e.getMessage()); 
} 
} 
}
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Posts: 128
Joined: Sat, 18 Nov 2006 11:51 am
Location: Rio de Janeiro - RJ

Hits the line there with the two below because it appeared "broken" ...

Select all

con = DriverManager.getConnection("jdbc:oracle:thin:@192.NNN.NNN.NNN:1521:ID_DO_SEU_BANCO", 
"SEU_USUARIO","SUA_SENHA");
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Posts: 128
Joined: Sat, 18 Nov 2006 11:51 am
Location: Rio de Janeiro - RJ

Personnel:

A patch 19/9/2013 "at WHO_JAVA_XREF, or asking on point:

Select all

LOOP 
        
       XZ_OK_ONDE := INSTR(UPPER(XZ_OK_DCLIN),XZ_OK_XNMOBJ,XZ_OK_ONDE,XZ_OK_VEZ); 
       IF XZ_OK_ONDE > 0 THEN 
         IF (XZ_OK_ONDE + XZ_OK_LEN - 1) = XZ_OK_FIM  
          OR XZ_OK_XNMOBJ || ' ' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1)) 
          OR XZ_OK_XNMOBJ || '"' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1)) 
          OR XZ_OK_XNMOBJ || '''' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1))    
          OR XZ_OK_XNMOBJ || ',' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1))   
          OR XZ_OK_XNMOBJ || ';' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1)) 
          OR XZ_OK_XNMOBJ || ')' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1)) 
          OR XZ_OK_XNMOBJ || '(' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1)) 
          OR XZ_OK_XNMOBJ || '.' = UPPER(SUBSTR(XZ_OK_DCLIN,XZ_OK_ONDE,XZ_OK_LEN + 1)) -- 19/9/2013 
         THEN 
           XZ_OK_EXISTE := 1; 
           RETURN TRUE; 
         ELSE 
           XZ_OK_VEZ := 2; 
         END IF; 
       ELSE 
         XZ_OK_EXISTE := 0; 
         RETURN FALSE; 
       END IF;   
        
     END LOOP;
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Posts: 128
Joined: Sat, 18 Nov 2006 11:51 am
Location: Rio de Janeiro - RJ

Dear:

I attached a "clone" of WHO_JAVA_XREF, WHO_SQL_XREF.

Is now possible a cross-reference of SQL objects on the SQL (procedure, function, function, etc) executable sources, including references to the possible Java code (use of the references generated by WHO_Java_XREF).

A hug,

Renato Viana
Attachments
who_sql_xref.zip
Procedure Referência Cruzada Objetos SQL e JAVA
(5.16 KiB) Downloaded 986 times
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Posts: 128
Joined: Sat, 18 Nov 2006 11:51 am
Location: Rio de Janeiro - RJ

Personnel:

I attached a zip with any Java fonts by composing the application that uploads the oracle of all Java fonts from an informed directory.

ABS, Renato Viana
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Posts: 128
Joined: Sat, 18 Nov 2006 11:51 am
Location: Rio de Janeiro - RJ

Personal: there goes the zip.
Attachments
JavaXref.zip
Fontes Java UPLOAD no Oracle
(92.75 KiB) Downloaded 898 times
DanielNN
Moderador
Moderador
Posts: 641
Joined: Mon, 03 Sep 2007 3:26 pm
Location: Fortaleza - CE
att,

Daniel N.N.

Congratulations Renato for the work done and to its contribution to the forum.
Note: I'll need it soon. : D.
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Posts: 128
Joined: Sat, 18 Nov 2006 11:51 am
Location: Rio de Janeiro - RJ

Personal: Now everything has been improved in the topic below, check out.
http://en.glufke.net/oracle/viewtopic.php?f=2&t=9849
ABS,
Renato Viana https://br.linkedin.com/pub/renato-mene ... 35/573/11b
Post Reply
  • Information
  • Who is online

    Users browsing this forum: No registered users and 1 guest