Prezados:
Em PL/SQL conseguimos até encontrar quais procedures fazem INSERT em determinada Tabela.
Agora em milhares de linhas de código JAVA, como resolver uma simples questão:
"Quero uma lista contendo os NOMES das TABELAS e de OBJETOS "executáveis" (procedures, functions) que são utilizados".
Note que podemos ter um código JAVA até bem decente, mas podemos ter também indecente. Resumindo:
Sempre existirá em algum lugar do código JAVA escrito algo "...select * from nome_tabela..." ou ...call..."proc_x"...
Muito complicado?
Grato,
Renato
Encontrar Nomes Objetos SQL no código JAVA
-
- Rank: Analista Pleno
- Mensagens: 128
- Registrado em: Sáb, 18 Nov 2006 11:51 am
- Localização: Rio de Janeiro - RJ
- stcoutinho
- Moderador
- Mensagens: 850
- Registrado em: Qua, 11 Mai 2011 5:15 pm
- Localização: são Paulo - SP
Oi Renato,
Talvez aqui eu esteja exagerando, mas você poderia fazer o seguinte:
1) Crie uma tabela (TBL_COD_JAVA)com dois campos :
NO_CLASSE_JAVA VARCHAR2(100)
NU_LINHA NUMBER(4),
TE_JAVA VARCHAR2(4000)
2) Extraia todos os seus códigos JAVA em arquivos TEXTO;
3) Com a ajuda de um excel, monte uma pasta com 3 colunas. Adicione o texto java na 3a coluna, o nome da classe java na 1a coluna. Coloque o numero da linha na 2a. Exporte o arquivo como CSV (texto, delimitado);
3) Importe todos estes códigos JAVA na tabela do passo 1. Use o SQL*LOADER se for o caso
4) Faça queries de JOIN entre esta tabela e o dicionário de dados. Conecte-se como o OWNER das tabelas e objetos acessados pelo seu código java:
Ex:
5) Você pode fazer vários joins: com USER_TABLES, USER_SEQUENCES, USER_VIEWS, etc
Pode parecer uma idéia lusitana, mas a grosso modo é como você criasse uma espécie de dicionário de dados para seus códigos java, da mesma forma que existe o USER_SOURCE para o código PL/SQL.
Se não desejar fazer isso, talvez você devesse ficar monitorando a sessão SQL que seria acessada por este código JAVA e ficar auditando os comandos. Tipo, fazer que o seu código java se conecte com um usuário específico e monitorar todos os comandos executados no banco por este usuário.
Talvez os foristas tenham outra ideia melhor para o seu problema.
Abraços e boa sorte,
Sergio Coutinho
Talvez aqui eu esteja exagerando, mas você poderia fazer o seguinte:
1) Crie uma tabela (TBL_COD_JAVA)com dois campos :
NO_CLASSE_JAVA VARCHAR2(100)
NU_LINHA NUMBER(4),
TE_JAVA VARCHAR2(4000)
2) Extraia todos os seus códigos JAVA em arquivos TEXTO;
3) Com a ajuda de um excel, monte uma pasta com 3 colunas. Adicione o texto java na 3a coluna, o nome da classe java na 1a coluna. Coloque o numero da linha na 2a. Exporte o arquivo como CSV (texto, delimitado);
3) Importe todos estes códigos JAVA na tabela do passo 1. Use o SQL*LOADER se for o caso
4) Faça queries de JOIN entre esta tabela e o dicionário de dados. Conecte-se como o OWNER das tabelas e objetos acessados pelo seu código java:
Ex:
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||'%'
Pode parecer uma idéia lusitana, mas a grosso modo é como você criasse uma espécie de dicionário de dados para seus códigos java, da mesma forma que existe o USER_SOURCE para o código PL/SQL.
Se não desejar fazer isso, talvez você devesse ficar monitorando a sessão SQL que seria acessada por este código JAVA e ficar auditando os comandos. Tipo, fazer que o seu código java se conecte com um usuário específico e monitorar todos os comandos executados no banco por este usuário.
Talvez os foristas tenham outra ideia melhor para o seu problema.
Abraços e boa sorte,
Sergio Coutinho
-
- Rank: Analista Pleno
- Mensagens: 128
- Registrado em: Sáb, 18 Nov 2006 11:51 am
- Localização: Rio de Janeiro - RJ
Coutinho: vou tentar. Vou falar com o programador JAVA para conseguir a melhor forma para se ter este arquivo texto onde estaria o fonte JAVA.
Obrigado
Obrigado
-
- Rank: Analista Pleno
- Mensagens: 128
- Registrado em: Sáb, 18 Nov 2006 11:51 am
- Localização: Rio de Janeiro - RJ
Coutinho:
Segui sua sugestão e fiz uma procedure WHO_JAVA_XREF que é uma saída.
Veja por aí o que você acha.
Segui sua sugestão e fiz uma procedure WHO_JAVA_XREF que é uma saída.
Veja por aí o que você acha.
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;
-
- Rank: Analista Pleno
- Mensagens: 128
- Registrado em: Sáb, 18 Nov 2006 11:51 am
- Localização: Rio de Janeiro - RJ
Coutinho:
Como agora só falta o utilitário, em Desktop, JAVA para à partir do(s) diretório(s) fornecido(s) inserir todos os fontes java (.java; .xml) na Tabela Z_JAVA_SQL_XREF alimentando as colunas NMARQJAV, NRLIN e DCLIN.
Quem sabe, você não pode confeccioná-lo?
Anexei uma série de informações sobre arquivos sequenciais no zip.
Um abraço,
Renato Viana
Como agora só falta o utilitário, em Desktop, JAVA para à partir do(s) diretório(s) fornecido(s) inserir todos os fontes java (.java; .xml) na Tabela Z_JAVA_SQL_XREF alimentando as colunas NMARQJAV, NRLIN e DCLIN.
Quem sabe, você não pode confeccioná-lo?
Anexei uma série de informações sobre arquivos sequenciais no zip.
Um abraço,
Renato Viana
- Anexos
-
- ORARQSEQ.rar
- (1.18 MiB) Baixado 807 vezes
-
- Rank: Analista Pleno
- Mensagens: 128
- Registrado em: Sáb, 18 Nov 2006 11:51 am
- Localização: Rio de Janeiro - RJ
Coutinho:
Já fiz a rotina básica abaixo. Depois foi apenas adaptá-la para receber nomes de todos os arquivos .java e .xml partindo de um diretório.
Um abraço,
Renato Viana
Já fiz a rotina básica abaixo. Depois foi apenas adaptá-la para receber nomes de todos os arquivos .java e .xml partindo de um diretório.
Um abraço,
Renato Viana
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());
}
}
}
-
- Rank: Analista Pleno
- Mensagens: 128
- Registrado em: Sáb, 18 Nov 2006 11:51 am
- Localização: Rio de Janeiro - RJ
acerta a linha aí com as duas abaixo, porque apareceu "quebrada"...
con = DriverManager.getConnection("jdbc:oracle:thin:@192.NNN.NNN.NNN:1521:ID_DO_SEU_BANCO",
"SEU_USUARIO","SUA_SENHA");
-
- Rank: Analista Pleno
- Mensagens: 128
- Registrado em: Sáb, 18 Nov 2006 11:51 am
- Localização: Rio de Janeiro - RJ
Pessoal:
Um "patch 19/9/2013" na WHO_JAVA_XREF, foi acrescentado OR perguntando sobre ponto:
Um "patch 19/9/2013" na WHO_JAVA_XREF, foi acrescentado OR perguntando sobre ponto:
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;
-
- Rank: Analista Pleno
- Mensagens: 128
- Registrado em: Sáb, 18 Nov 2006 11:51 am
- Localização: Rio de Janeiro - RJ
Prezados:
Anexei um "clone" da WHO_JAVA_XREF, a WHO_SQL_XREF.
Agora é possível uma referência cruzada de objetos SQL nos próprios fontes "executáveis" SQL (procedure, function, etc) inclusive com referências ao possível código JAVA (faz uso das referências geradas pela WHO_JAVA_XREF).
Um abraço,
Renato Viana
Anexei um "clone" da WHO_JAVA_XREF, a WHO_SQL_XREF.
Agora é possível uma referência cruzada de objetos SQL nos próprios fontes "executáveis" SQL (procedure, function, etc) inclusive com referências ao possível código JAVA (faz uso das referências geradas pela WHO_JAVA_XREF).
Um abraço,
Renato Viana
- Anexos
-
- who_sql_xref.zip
- Procedure Referência Cruzada Objetos SQL e JAVA
- (5.16 KiB) Baixado 822 vezes
-
- Rank: Analista Pleno
- Mensagens: 128
- Registrado em: Sáb, 18 Nov 2006 11:51 am
- Localização: Rio de Janeiro - RJ
Pessoal:
Anexei um ZIP com todo os fontes JAVA compondo o aplicativo que faz o UPLOAD no ORACLE de todos os fontes java à partir de um diretório informado.
Abs, Renato Viana
Anexei um ZIP com todo os fontes JAVA compondo o aplicativo que faz o UPLOAD no ORACLE de todos os fontes java à partir de um diretório informado.
Abs, Renato Viana
-
- Rank: Analista Pleno
- Mensagens: 128
- Registrado em: Sáb, 18 Nov 2006 11:51 am
- Localização: Rio de Janeiro - RJ
Pessoal: aí vai o ZIP.
- Anexos
-
- JavaXref.zip
- Fontes Java UPLOAD no Oracle
- (92.75 KiB) Baixado 716 vezes
-
- Rank: Analista Pleno
- Mensagens: 128
- Registrado em: Sáb, 18 Nov 2006 11:51 am
- Localização: Rio de Janeiro - RJ
Pessoal: agora tudo foi melhorado no tópico abaixo, confiram.
http://glufke.net/oracle/viewtopic.php?f=2&t=9849
Abs,
Renato Viana
https://br.linkedin.com/pub/renato-mene ... 35/573/11b
http://glufke.net/oracle/viewtopic.php?f=2&t=9849
Abs,
Renato Viana
https://br.linkedin.com/pub/renato-mene ... 35/573/11b
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes