Re: Res: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-26 Por tôpico jlchiappa
=

"O inteligente se aborrece com a burrice que grassa no mundo, o sábio
se diverte com ela"
--- Em oracle_br@yahoogrupos.com.br, "Gabriel Herdt"
<[EMAIL PROTECTED]> escreveu
>
> Ops, Desculpa me exspressei mal.
> na verdade seu exemplo só arrumei um () e acerto. mas tentei colocar 
> meu caso e retorno um erro ==>
> 
>  ORA-06502: PL/SQL: erro: buffer de string de caracteres pequeno 
> demais numérico ou de valor ORA-06512: em line 1
> 
> select
> sys.dbms_lob.substr(dbms_metadata.get_ddl
> ('PROCEDURE','PR_AUTODDL', 'TCCA'),
> sys.dbms_lob.getlength(dbms_metadata.get_ddl
> ('PROCEDURE','PR_AUTODDL', 'TCCA'))) DDL
> from dual
> 
> 
> --- Em oracle_br@yahoogrupos.com.br, "ithigvo"  escreveu
> >
> > Bom Dia,, 
> > 
> > Para converter o clob em varchar utilizo o seguinte comando,,
> > 
> > select 
> > sys.dbms_lob.substr(dbms_metadata.get_ddl('USER',usuario),
> > sys.dbms_lob.getlength(dbms_metadata.get_ddl 'USER',usuario)))   DDL
> > from dual 
> > 
> > neste caso para gerar o DDL de criação de usuários...
> > 
> > mas nunca o utilizei dentro de uma procedure,,
> > 
> > Veja se da certo
> > 
> > Gustavo Veríssimo
> > 
> > 
> > 
> > 
> > --- Em oracle_br@yahoogrupos.com.br, "Gabriel Herdt"
> >  escreveu
> > >
> > > Sem problemas se eu conseguir passo aqui para a lista. mas vou 
> poder 
> > > ver isso soh no final de semana. tem que estar pronto na quarta a 
> > > funcao =(. Vou passar uma funcao que trabalha com read_file do 
> oracle.
> > > Ai se voce conseguir modificar ela para nosso objetivo ficaria 
> grato.
> > > 
> > > PROCEDURE read_file
> > >  (pNomeTab in Varchar2,
> > >   pNomeCampo in VarChar2,
> > >   pNomeArq in VarChar2,
> > >   pNomeDire in VarChar2,
> > >   P_ERRO OUT VARCHAR2)
> > >  IS
> > >   src_file BFILE := bfilename(pNomeDire, pNomeArq);
> > >   dst_file BLOB;
> > >   lgh_file BINARY_INTEGER;
> > >   sNomeDire char; --create or replace directory DIRETO 
> > > as 'C:\Sistemas\Gerencial\Figuras';
> > > 
> > > BEGIN
> > > 
> > > -- Zera Campo Blob
> > > EXECUTE IMMEDIATE 'UPDATE '|| pNomeTab ||' SET ' 
> ||pNomeCampo|| ' 
> > > = EMPTY_BLOB()';
> > > -- Trava no dado do campo
> > > EXECUTE IMMEDIATE 'Select ' || pNomeCampo ||' From ' || 
> pNomeTab 
> > > ||' ' into dst_file ;
> > > -- Abre Arquivo
> > > sys.dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
> > > -- Determina Tamando em bytes do arquivo
> > > lgh_file := sys.dbms_lob.getlength(src_file);
> > > -- Ler arquivo
> > > sys.dbms_lob.loadfromfile(dst_file, src_file, lgh_file);
> > > -- Update no arquivo Blob
> > > EXECUTE IMMEDIATE 'UPDATE '|| pNomeTab ||' SET ' 
> ||pNomeCampo|| ' 
> > > = :dst_file'
> > > USING dst_file;
> > > COMMIT;
> > > -- Fecha Arquivo
> > > sys.dbms_lob.fileclose(src_file);
> > > EXCEPTION
> > >   WHEN no_data_found THEN
> > > rollback;
> > > P_ERRO := '-20001, Não há dados';
> > >   WHEN others THEN
> > > rollback;
> > > P_ERRO := '-20003, Não foi Possivel Gravar Arquivo';
> > > END read_file;
> > > 
> > > --- Em oracle_br@yahoogrupos.com.br, Wellerson Leite de Araújo 
> > >  escreveu
> > > >
> > > > Pessoal,
> > > > 
> > > > Neste caso eu acredito que o pacote DBMS_LOB possa ajudar. Nele 
> > > vocês podem utilizar o procedimento READ para ler "pedaços" de 
> uma 
> > > variável do tipo LOB. Estes pedaços poderiam ser acumulados em 
> uma 
> > > variável VARCHAR2 que poderia ser passada para o comando EXECUTE 
> > > IMMEDIATE.
> > > > Claro que se o DDL exceder  o tamanho máximo que um VARCHAR2 
> pode 
> > > amazenar, vocês podem ainda criar uma lógica que utilize um 
> vetor, 
> > > acredito que para a maioria dos DDLs retornados uma única 
> variável 
> > > será suficiente. O pacote DBMS_LOB também oferece a função 
> GETLENGTH, 
> > > que pode ser utilizada para testar a quantidade de caracteres 
> > > presentes numa variável CLOB.
> &g

Re: Res: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-26 Por tôpico Gabriel Herdt
na verdade esse comando SUBSTR só aceita até 4000 de byte.
Alguem tem alguma solução?
Como dar um execute EXECUTE IMMEDIATE em um CLOB com mais de 4000 
Caractere??

--- Em oracle_br@yahoogrupos.com.br, "Gabriel Herdt" 
<[EMAIL PROTECTED]> escreveu
>
> Ops, Desculpa me exspressei mal.
> na verdade seu exemplo só arrumei um () e acerto. mas tentei 
colocar 
> meu caso e retorno um erro ==>
> 
>  ORA-06502: PL/SQL: erro: buffer de string de caracteres pequeno 
> demais numérico ou de valor ORA-06512: em line 1
> 
> select
> sys.dbms_lob.substr(dbms_metadata.get_ddl
> ('PROCEDURE','PR_AUTODDL', 'TCCA'),
> sys.dbms_lob.getlength(dbms_metadata.get_ddl
> ('PROCEDURE','PR_AUTODDL', 'TCCA'))) DDL
> from dual
> 
> 
> --- Em oracle_br@yahoogrupos.com.br, "ithigvo"  escreveu
> >
> > Bom Dia,, 
> > 
> > Para converter o clob em varchar utilizo o seguinte comando,,
> > 
> > select 
> > sys.dbms_lob.substr(dbms_metadata.get_ddl('USER',usuario),
> > sys.dbms_lob.getlength(dbms_metadata.get_ddl 'USER',usuario)))   
DDL
> > from dual 
> > 
> > neste caso para gerar o DDL de criação de usuários...
> > 
> > mas nunca o utilizei dentro de uma procedure,,
> > 
> > Veja se da certo
> > 
> > Gustavo Veríssimo
> > 
> > 
> > 
> > 
> > --- Em oracle_br@yahoogrupos.com.br, "Gabriel Herdt"
> >  escreveu
> > >
> > > Sem problemas se eu conseguir passo aqui para a lista. mas vou 
> poder 
> > > ver isso soh no final de semana. tem que estar pronto na quarta 
a 
> > > funcao =(. Vou passar uma funcao que trabalha com read_file do 
> oracle.
> > > Ai se voce conseguir modificar ela para nosso objetivo ficaria 
> grato.
> > > 
> > > PROCEDURE read_file
> > >  (pNomeTab in Varchar2,
> > >   pNomeCampo in VarChar2,
> > >   pNomeArq in VarChar2,
> > >   pNomeDire in VarChar2,
> > >   P_ERRO OUT VARCHAR2)
> > >  IS
> > >   src_file BFILE := bfilename(pNomeDire, pNomeArq);
> > >   dst_file BLOB;
> > >   lgh_file BINARY_INTEGER;
> > >   sNomeDire char; --create or replace directory DIRETO 
> > > as 'C:\Sistemas\Gerencial\Figuras';
> > > 
> > > BEGIN
> > > 
> > > -- Zera Campo Blob
> > > EXECUTE IMMEDIATE 'UPDATE '|| pNomeTab ||' SET ' 
> ||pNomeCampo|| ' 
> > > = EMPTY_BLOB()';
> > > -- Trava no dado do campo
> > > EXECUTE IMMEDIATE 'Select ' || pNomeCampo ||' From ' || 
> pNomeTab 
> > > ||' ' into dst_file ;
> > > -- Abre Arquivo
> > > sys.dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
> > > -- Determina Tamando em bytes do arquivo
> > > lgh_file := sys.dbms_lob.getlength(src_file);
> > > -- Ler arquivo
> > > sys.dbms_lob.loadfromfile(dst_file, src_file, lgh_file);
> > > -- Update no arquivo Blob
> > > EXECUTE IMMEDIATE 'UPDATE '|| pNomeTab ||' SET ' 
> ||pNomeCampo|| ' 
> > > = :dst_file'
> > > USING dst_file;
> > > COMMIT;
> > > -- Fecha Arquivo
> > > sys.dbms_lob.fileclose(src_file);
> > > EXCEPTION
> > >   WHEN no_data_found THEN
> > > rollback;
> > > P_ERRO := '-20001, Não há dados';
> > >   WHEN others THEN
> > > rollback;
> > > P_ERRO := '-20003, Não foi Possivel Gravar Arquivo';
> > > END read_file;
> > > 
> > > --- Em oracle_br@yahoogrupos.com.br, Wellerson Leite de Araújo 
> > >  escreveu
> > > >
> > > > Pessoal,
> > > > 
> > > > Neste caso eu acredito que o pacote DBMS_LOB possa ajudar. 
Nele 
> > > vocês podem utilizar o procedimento READ para ler "pedaços" de 
> uma 
> > > variável do tipo LOB. Estes pedaços poderiam ser acumulados em 
> uma 
> > > variável VARCHAR2 que poderia ser passada para o comando 
EXECUTE 
> > > IMMEDIATE.
> > > > Claro que se o DDL exceder  o tamanho máximo que um VARCHAR2 
> pode 
> > > amazenar, vocês podem ainda criar uma lógica que utilize um 
> vetor, 
> > > acredito que para a maioria dos DDLs retornados uma única 
> variável 
> > > será suficiente. O pacote DBMS_LOB também oferece a função 
> GETLENGTH, 
> > > que pode ser utilizada para testar a quantidade de caracteres 
> > > prese

Re: Res: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-26 Por tôpico Gabriel Herdt
Ops, Desculpa me exspressei mal.
na verdade seu exemplo só arrumei um () e acerto. mas tentei colocar 
meu caso e retorno um erro ==>

 ORA-06502: PL/SQL: erro: buffer de string de caracteres pequeno 
demais numérico ou de valor ORA-06512: em line 1

select
sys.dbms_lob.substr(dbms_metadata.get_ddl
('PROCEDURE','PR_AUTODDL', 'TCCA'),
sys.dbms_lob.getlength(dbms_metadata.get_ddl
('PROCEDURE','PR_AUTODDL', 'TCCA'))) DDL
from dual


--- Em oracle_br@yahoogrupos.com.br, "ithigvo" <[EMAIL PROTECTED]> escreveu
>
> Bom Dia,, 
> 
> Para converter o clob em varchar utilizo o seguinte comando,,
> 
> select 
> sys.dbms_lob.substr(dbms_metadata.get_ddl('USER',usuario),
> sys.dbms_lob.getlength(dbms_metadata.get_ddl 'USER',usuario)))   DDL
> from dual 
> 
> neste caso para gerar o DDL de criação de usuários...
> 
> mas nunca o utilizei dentro de uma procedure,,
> 
> Veja se da certo
> 
> Gustavo Veríssimo
> 
> 
> 
> 
> --- Em oracle_br@yahoogrupos.com.br, "Gabriel Herdt"
>  escreveu
> >
> > Sem problemas se eu conseguir passo aqui para a lista. mas vou 
poder 
> > ver isso soh no final de semana. tem que estar pronto na quarta a 
> > funcao =(. Vou passar uma funcao que trabalha com read_file do 
oracle.
> > Ai se voce conseguir modificar ela para nosso objetivo ficaria 
grato.
> > 
> > PROCEDURE read_file
> >  (pNomeTab in Varchar2,
> >   pNomeCampo in VarChar2,
> >   pNomeArq in VarChar2,
> >   pNomeDire in VarChar2,
> >   P_ERRO OUT VARCHAR2)
> >  IS
> >   src_file BFILE := bfilename(pNomeDire, pNomeArq);
> >   dst_file BLOB;
> >   lgh_file BINARY_INTEGER;
> >   sNomeDire char; --create or replace directory DIRETO 
> > as 'C:\Sistemas\Gerencial\Figuras';
> > 
> > BEGIN
> > 
> > -- Zera Campo Blob
> > EXECUTE IMMEDIATE 'UPDATE '|| pNomeTab ||' SET ' 
||pNomeCampo|| ' 
> > = EMPTY_BLOB()';
> > -- Trava no dado do campo
> > EXECUTE IMMEDIATE 'Select ' || pNomeCampo ||' From ' || 
pNomeTab 
> > ||' ' into dst_file ;
> > -- Abre Arquivo
> > sys.dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
> > -- Determina Tamando em bytes do arquivo
> > lgh_file := sys.dbms_lob.getlength(src_file);
> > -- Ler arquivo
> > sys.dbms_lob.loadfromfile(dst_file, src_file, lgh_file);
> > -- Update no arquivo Blob
> > EXECUTE IMMEDIATE 'UPDATE '|| pNomeTab ||' SET ' 
||pNomeCampo|| ' 
> > = :dst_file'
> > USING dst_file;
> > COMMIT;
> > -- Fecha Arquivo
> > sys.dbms_lob.fileclose(src_file);
> > EXCEPTION
> >   WHEN no_data_found THEN
> > rollback;
> > P_ERRO := '-20001, Não há dados';
> >   WHEN others THEN
> > rollback;
> > P_ERRO := '-20003, Não foi Possivel Gravar Arquivo';
> > END read_file;
> > 
> > --- Em oracle_br@yahoogrupos.com.br, Wellerson Leite de Araújo 
> >  escreveu
> > >
> > > Pessoal,
> > > 
> > > Neste caso eu acredito que o pacote DBMS_LOB possa ajudar. Nele 
> > vocês podem utilizar o procedimento READ para ler "pedaços" de 
uma 
> > variável do tipo LOB. Estes pedaços poderiam ser acumulados em 
uma 
> > variável VARCHAR2 que poderia ser passada para o comando EXECUTE 
> > IMMEDIATE.
> > > Claro que se o DDL exceder  o tamanho máximo que um VARCHAR2 
pode 
> > amazenar, vocês podem ainda criar uma lógica que utilize um 
vetor, 
> > acredito que para a maioria dos DDLs retornados uma única 
variável 
> > será suficiente. O pacote DBMS_LOB também oferece a função 
GETLENGTH, 
> > que pode ser utilizada para testar a quantidade de caracteres 
> > presentes numa variável CLOB.
> > > Só mais um comentário. Neste caso, eu recomendaria uma 
procedure. 
> > Não é muito "elegante" utilizar parâmetros de OUT em uma function.
> > > 
> > > 
> > > Att,
> > > Wellerson
> > >  
> > > "Não vou deixar me embrutecer, eu acredito nos meus ideais. 
Podem 
> > até maltratar o meu coração, que meu espírito ninguém vai 
conseguir 
> > quebrar..."
> > > (Legião Urbana)
> > > 
> > > 
> > > "As idéias estão no chão, você tropeça e acha a solução..."
> > > (Titãs)
> > > 
> > > 
> > > 
> > > 
> > > 
> > > De: Carlos martello 
> > > Para: orac

Re: Res: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-26 Por tôpico Gabriel Herdt
; > --- Em oracle_br@yahoogrupos.com.br, Wellerson Leite de Araújo 
> >  escreveu
> > >
> > > Pessoal,
> > > 
> > > Neste caso eu acredito que o pacote DBMS_LOB possa ajudar. Nele 
> > vocês podem utilizar o procedimento READ para ler "pedaços" de 
uma 
> > variável do tipo LOB. Estes pedaços poderiam ser acumulados em 
uma 
> > variável VARCHAR2 que poderia ser passada para o comando EXECUTE 
> > IMMEDIATE.
> > > Claro que se o DDL exceder  o tamanho máximo que um VARCHAR2 
pode 
> > amazenar, vocês podem ainda criar uma lógica que utilize um 
vetor, 
> > acredito que para a maioria dos DDLs retornados uma única 
variável 
> > será suficiente. O pacote DBMS_LOB também oferece a função 
GETLENGTH, 
> > que pode ser utilizada para testar a quantidade de caracteres 
> > presentes numa variável CLOB.
> > > Só mais um comentário. Neste caso, eu recomendaria uma 
procedure. 
> > Não é muito "elegante" utilizar parâmetros de OUT em uma function.
> > > 
> > > 
> > > Att,
> > > Wellerson
> > >  
> > > "Não vou deixar me embrutecer, eu acredito nos meus ideais. 
Podem 
> > até maltratar o meu coração, que meu espírito ninguém vai 
conseguir 
> > quebrar..."
> > > (Legião Urbana)
> > > 
> > > 
> > > "As idéias estão no chão, você tropeça e acha a solução..."
> > > (Titãs)
> > > 
> > > 
> > > 
> > > 
> > > 
> > > De: Carlos martello 
> > > Para: oracle_br@yahoogrupos.com.br
> > > Enviadas: Quarta-feira, 19 de Novembro de 2008 17:14:31
> > > Assunto: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]
> > > 
> > > 
> > > Ah sim.
> > > 
> > > Então cara, vc não consegue pelo fato de um campo ou variável 
do 
> > tipo clob ter suas "particularidades" . 
> > > 
> > > Eu sinceramente também não sei e até pesquisaria pra vc (até pq 
> > também estava precisando dessa informação), mas o certo seria 
fazer 
> > uma pesquisa no Google ou metalink sobre como converter clob em 
> > varchar por exemplo. Assim o problema seria resolvido ;).
> > > 
> > > Assim que algum dos dois encontrar a "fórmula" encaminhamos, 
beleza?
> > > 
> > > Carlos Martello
> > > 
> > > DBA Oracle / Consultor de Tecnologia
> > > 
> > > TEL:  55+21+3094-6250
> > > 
> > > Choice Technologies S/A - Inteligência em Energia
> > > 
> > > e-mail: carlosmartello@ choice.com. br
> > > 
> > > De: [EMAIL PROTECTED] os.com.br [mailto:[EMAIL PROTECTED] 
> > os.com.br] Em nome de Gabriel Herdt
> > > Enviada em: quarta-feira, 19 de novembro de 2008 15:17
> > > Para: [EMAIL PROTECTED] os.com.br
> > > Assunto: Re: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]
> > > 
> > > Eu não consigo passar o resultado do Get_dll para uma variavel 
e 
> > > executar o conteudo dessa variavel. Tem outra forma de executar 
o 
> > > Resultado do GET_DDL?
> > > 
> > > --- Em [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%
> > 40yahoogrupos .com.br> , "Carlos Eduardo P. Martello" 
> > >  escreveu
> > > >
> > > > Gabriel, até vi agora de uma forma mais atenta que vc já faz 
o 
> > > execute
> > > > immediate dentro da função.
> > > > 
> > > > 
> > > > 
> > > > Não entendi o que você quer então
> > > > 
> > > > 
> > > > 
> > > > É o execute immediate que não está funcionando?
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > Abs,
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > Carlos Martello
> > > > 
> > > > DBA Oracle / Consultor de Tecnologia
> > > > 
> > > > TEL: 55+21+3094-6250
> > > > 
> > > > Choice Technologies S/A - Inteligência em Energia
> > > > 
> > > > e-mail: carlosmartello@ ...
> > > > 
> > > > 
> > > > 
> > > > De: [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%
> > 40yahoogrupos .com.br> 
> > > [mailto:[EMAIL PROTECTED] os.com.br <mailto:oracle_ br%
> > 40yahoogrupos .com.br> ] Em
> > > > nome de Gabriel Herdt
> > > >

Re: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-23 Por tôpico Gabriel Herdt
gt; > XTENTS 505
> > >   PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL 
DEFAULT)
> > > 
> > >  TABLESPACE "TOOLS"  ENABLE, 
> > >  CONSTRAINT "TESTE_FK" FOREIGN KEY ("DBLINK", "CA
> > > TCHUP")
> > >   REFERENCES "SYSTEM"."DEF$_DESTINATION" 
> > ("DBLINK", "CATCHUP")
> > > ENABLE
> > > 
> > >   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS 
LOGGING
> > >   STORAGE(I
> > > NITIAL 40960 NEXT 40960 MINEXTENTS 1 MAXEXTENTS 505
> > >   PCTINCREASE 50 FREELISTS 1
> > >  FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
> > >   TABLESPACE "TOOLS" 
> > > 
> > > ==> olha aí :
> > > 
> > > [EMAIL PROTECTED]:SQL>BEGIN
> > >   2  execute immediate(to_char(:x));
> > >   3  END;
> > >   4  /
> > > 
> > > Procedimento PL/SQL concluído com sucesso.
> > > 
> > > [EMAIL PROTECTED]:SQL>@desc teste
> > >  Nome  Nulo?Tipo
> > >  - 
> > > 
> > >  ENQ_TID   NOT NULL VARCHAR2(22)
> > >  STEP_NO   NOT NULL NUMBER
> > >  DBLINKNOT NULL VARCHAR2
(128)
> > >  SCHEMA_NAMEVARCHAR2(30)
> > >  PACKAGE_NAME   VARCHAR2(30)
> > >  CATCHUPRAW(16)
> > > 
> > > []s
> > > 
> > >   Chiappa
> > > 
> > > 
> > 
==
> > > Palestrante ENPO.BR - acesse http://www.enpo-br.org/
> > > Instrutor Workshops ENPO/TWS - acesse 
> > http://www.twstecnologia.com.br/
> > > 
> > 
==
> > > 
> > > "O mundo precisa de mais gênios humildes e modestos - 
infelizmente
> > > somos muito poucos"
> > > 
> > > --- Em oracle_br@yahoogrupos.com.br, "Carlos martello"
> > >  escreveu
> > > >
> > > > Ah sim.
> > > > 
> > > > Então cara, vc não consegue pelo fato de um campo ou variável 
do
> > > tipo clob ter suas "particularidades". 
> > > > 
> > > > Eu sinceramente também não sei e até pesquisaria pra vc (até 
pq
> > > também estava precisando dessa informação), mas o certo seria 
fazer
> > > uma pesquisa no Google ou metalink sobre como converter clob em
> > > varchar por exemplo. Assim o problema seria resolvido ;).
> > > > 
> > > >  
> > > > 
> > > > Assim que algum dos dois encontrar a "fórmula" encaminhamos, 
> > beleza?
> > > > 
> > > >  
> > > > 
> > > >  
> > > > 
> > > >  
> > > > 
> > > > Carlos Martello
> > > > 
> > > > DBA Oracle / Consultor de Tecnologia
> > > > 
> > > > TEL:  55+21+3094-6250
> > > > 
> > > > Choice Technologies S/A - Inteligência em Energia
> > > > 
> > > > e-mail: carlosmartello@
> > > > 
> > > >  
> > > > 
> > > > De: oracle_br@yahoogrupos.com.br
> > > [mailto:[EMAIL PROTECTED] Em nome de Gabriel Herdt
> > > > Enviada em: quarta-feira, 19 de novembro de 2008 15:17
> > > > Para: oracle_br@yahoogrupos.com.br
> > > > Assunto: Re: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]
> > > > 
> > > >  
> > > > 
> > > > Eu não consigo passar o resultado do Get_dll para uma 
variavel e 
> > > > executar o conteudo dessa variavel. Tem outra forma de 
executar o 
> > > > Resultado do GET_DDL?
> > > > 
> > > > --- Em oracle_br@yahoogrupos.com.br
> > > <mailto:oracle_br%40yahoogrupos.com.br> , "Carlos Eduardo P. 
> > Martello" 
> > > >  escreveu
> > > > >
> > > > > Gabriel, até vi agora de uma forma mais atenta que vc já 
faz o 
> > > > execute
> > > > > immediate dentro da função.
> > > > > 
> > > > > 
> > > > > 
> > > > > Não entendi o que você quer então

Re: Res: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-21 Por tôpico ithigvo
Bom Dia,, 

Para converter o clob em varchar utilizo o seguinte comando,,

select 
sys.dbms_lob.substr(dbms_metadata.get_ddl('USER',usuario),
sys.dbms_lob.getlength(dbms_metadata.get_ddl 'USER',usuario)))   DDL
from dual 

neste caso para gerar o DDL de criação de usuários...

mas nunca o utilizei dentro de uma procedure,,

Veja se da certo

Gustavo Veríssimo




--- Em oracle_br@yahoogrupos.com.br, "Gabriel Herdt"
<[EMAIL PROTECTED]> escreveu
>
> Sem problemas se eu conseguir passo aqui para a lista. mas vou poder 
> ver isso soh no final de semana. tem que estar pronto na quarta a 
> funcao =(. Vou passar uma funcao que trabalha com read_file do oracle.
> Ai se voce conseguir modificar ela para nosso objetivo ficaria grato.
> 
> PROCEDURE read_file
>  (pNomeTab in Varchar2,
>   pNomeCampo in VarChar2,
>   pNomeArq in VarChar2,
>   pNomeDire in VarChar2,
>   P_ERRO OUT VARCHAR2)
>  IS
>   src_file BFILE := bfilename(pNomeDire, pNomeArq);
>   dst_file BLOB;
>   lgh_file BINARY_INTEGER;
>   sNomeDire char; --create or replace directory DIRETO 
> as 'C:\Sistemas\Gerencial\Figuras';
> 
> BEGIN
> 
> -- Zera Campo Blob
> EXECUTE IMMEDIATE 'UPDATE '|| pNomeTab ||' SET ' ||pNomeCampo|| ' 
> = EMPTY_BLOB()';
> -- Trava no dado do campo
> EXECUTE IMMEDIATE 'Select ' || pNomeCampo ||' From ' || pNomeTab 
> ||' ' into dst_file ;
> -- Abre Arquivo
> sys.dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
> -- Determina Tamando em bytes do arquivo
> lgh_file := sys.dbms_lob.getlength(src_file);
> -- Ler arquivo
> sys.dbms_lob.loadfromfile(dst_file, src_file, lgh_file);
> -- Update no arquivo Blob
> EXECUTE IMMEDIATE 'UPDATE '|| pNomeTab ||' SET ' ||pNomeCampo|| ' 
> = :dst_file'
> USING dst_file;
> COMMIT;
> -- Fecha Arquivo
> sys.dbms_lob.fileclose(src_file);
> EXCEPTION
>   WHEN no_data_found THEN
> rollback;
> P_ERRO := '-20001, Não há dados';
>   WHEN others THEN
> rollback;
> P_ERRO := '-20003, Não foi Possivel Gravar Arquivo';
> END read_file;
> 
> --- Em oracle_br@yahoogrupos.com.br, Wellerson Leite de Araújo 
>  escreveu
> >
> > Pessoal,
> > 
> > Neste caso eu acredito que o pacote DBMS_LOB possa ajudar. Nele 
> vocês podem utilizar o procedimento READ para ler "pedaços" de uma 
> variável do tipo LOB. Estes pedaços poderiam ser acumulados em uma 
> variável VARCHAR2 que poderia ser passada para o comando EXECUTE 
> IMMEDIATE.
> > Claro que se o DDL exceder  o tamanho máximo que um VARCHAR2 pode 
> amazenar, vocês podem ainda criar uma lógica que utilize um vetor, 
> acredito que para a maioria dos DDLs retornados uma única variável 
> será suficiente. O pacote DBMS_LOB também oferece a função GETLENGTH, 
> que pode ser utilizada para testar a quantidade de caracteres 
> presentes numa variável CLOB.
> > Só mais um comentário. Neste caso, eu recomendaria uma procedure. 
> Não é muito "elegante" utilizar parâmetros de OUT em uma function.
> > 
> > 
> > Att,
> > Wellerson
> >  
> > "Não vou deixar me embrutecer, eu acredito nos meus ideais. Podem 
> até maltratar o meu coração, que meu espírito ninguém vai conseguir 
> quebrar..."
> > (Legião Urbana)
> > 
> > 
> > "As idéias estão no chão, você tropeça e acha a solução..."
> > (Titãs)
> > 
> > 
> > 
> > 
> > 
> > De: Carlos martello 
> > Para: oracle_br@yahoogrupos.com.br
> > Enviadas: Quarta-feira, 19 de Novembro de 2008 17:14:31
> > Assunto: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]
> > 
> > 
> > Ah sim.
> > 
> > Então cara, vc não consegue pelo fato de um campo ou variável do 
> tipo clob ter suas "particularidades" . 
> > 
> > Eu sinceramente também não sei e até pesquisaria pra vc (até pq 
> também estava precisando dessa informação), mas o certo seria fazer 
> uma pesquisa no Google ou metalink sobre como converter clob em 
> varchar por exemplo. Assim o problema seria resolvido ;).
> > 
> > Assim que algum dos dois encontrar a "fórmula" encaminhamos, beleza?
> > 
> > Carlos Martello
> > 
> > DBA Oracle / Consultor de Tecnologia
> > 
> > TEL:  55+21+3094-6250
> > 
> > Choice Technologies S/A - Inteligência em Energia
> > 
> > e-mail: carlosmartello@ choice.com. br
> > 
> > De: [EMAIL PROTECTED] os.com.br [mailto:[EMAIL PROTECTED] 
> os.com.br] Em nome de Gabriel Herd

Re: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-21 Por tôpico jlchiappa
TECTED]:SQL>BEGIN
> >   2  execute immediate(:x);
> >   3  END;
> >   4  /
> > execute immediate(:x);
> >  *
> > ERRO na linha 2:
> > ORA-06550: linha 2, coluna 18:
> > PLS-00382: a expressão é do tipo incorreto
> > ORA-06550: linha 2, coluna 1:
> > PL/SQL: Statement ignored
> > 
> > ==> OK, a documentação nos diz que o IMMEDIATE espera um CHAR, não
> > entende CLOB, converto então (** SEM ** usar nenhum "truque mágico, 
> tá
> > bem) :
> > 
> > [EMAIL PROTECTED]:SQL>BEGIN
> >   2  execute immediate(to_char(:x));
> >   3  END;
> >   4  /
> > BEGIN
> > *
> > ERRO na linha 1:
> > ORA-02264: nome já usado por uma restrição existente
> > ORA-06512: em line 2
> > 
> > ==> executou blz, mas já tinha a constraint que ele tenta criar, 
> vou a
> > alterar :
> > 
> > [EMAIL PROTECTED]:SQL>exec :x := replace(:x, 'DEF$_CALL_DESTINATION',
> > 'TESTE_FK');
> > 
> > Procedimento PL/SQL concluído com sucesso.
> > 
> > [EMAIL PROTECTED]:SQL>print x
> > 
> > X
> > 
> 
> > 
> >   CREATE TABLE "SYSTEM"."TESTE" 
> >("ENQ_TID" VARCHAR2(22), 
> > "STEP_NO" NUMBE
> > R, 
> > "DBLINK" VARCHAR2(128), 
> > "SCHEMA_NAME" VARCHAR2(30), 
> > "PACKAGE_NAME" VARC
> > HAR2(30), 
> > "CATCHUP" RAW(16) DEFAULT '00', 
> >  CONSTRAINT "TESTE_PRIMARY" PRIMAR
> > Y KEY ("ENQ_TID", "DBLINK", "STEP_NO")
> >   USING INDEX PCTFREE 10 INITRANS 2 MAXTR
> > ANS 255 COMPUTE STATISTICS 
> >   STORAGE(INITIAL 40960 NEXT 40960 MINEXTENTS 1 MAXE
> > XTENTS 505
> >   PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
> > 
> >  TABLESPACE "TOOLS"  ENABLE, 
> >  CONSTRAINT "TESTE_FK" FOREIGN KEY ("DBLINK", "CA
> > TCHUP")
> >   REFERENCES "SYSTEM"."DEF$_DESTINATION" 
> ("DBLINK", "CATCHUP")
> > ENABLE
> > 
> >   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
> >   STORAGE(I
> > NITIAL 40960 NEXT 40960 MINEXTENTS 1 MAXEXTENTS 505
> >   PCTINCREASE 50 FREELISTS 1
> >  FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
> >   TABLESPACE "TOOLS" 
> > 
> > ==> olha aí :
> > 
> > [EMAIL PROTECTED]:SQL>BEGIN
> >   2  execute immediate(to_char(:x));
> >   3  END;
> >   4  /
> > 
> > Procedimento PL/SQL concluído com sucesso.
> > 
> > [EMAIL PROTECTED]:SQL>@desc teste
> >  Nome  Nulo?Tipo
> >  - 
> > 
> >  ENQ_TID   NOT NULL VARCHAR2(22)
> >  STEP_NO   NOT NULL NUMBER
> >  DBLINKNOT NULL VARCHAR2(128)
> >  SCHEMA_NAMEVARCHAR2(30)
> >  PACKAGE_NAME   VARCHAR2(30)
> >  CATCHUP        RAW(16)
> > 
> > []s
> > 
> >   Chiappa
> > 
> > 
> ==
> > Palestrante ENPO.BR - acesse http://www.enpo-br.org/
> > Instrutor Workshops ENPO/TWS - acesse 
> http://www.twstecnologia.com.br/
> > 
> ==
> > 
> > "O mundo precisa de mais gênios humildes e modestos - infelizmente
> > somos muito poucos"
> > 
> > --- Em oracle_br@yahoogrupos.com.br, "Carlos martello"
> >  escreveu
> > >
> > > Ah sim.
> > > 
> > > Então cara, vc não consegue pelo fato de um campo ou variável do
> > tipo clob ter suas "particularidades". 
> > > 
> > > Eu sinceramente também não sei e até pesquisaria pra vc (até pq
> > também estava precisando dessa informação), mas o certo seria fazer
> > uma pesquisa no Google ou metalink sobre como converter clob em
> > varchar por exemplo. Assim o problema seria resolvido ;).
> > > 
> > >  
> > > 
> > > Assim que algum dos dois encontrar a "fórmula" encaminhamos, 
> beleza?
> > > 
>

Re: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-21 Por tôpico Gabriel Herdt
  CONSTRAINT "TESTE_PRIMARY" PRIMAR
> Y KEY ("ENQ_TID", "DBLINK", "STEP_NO")
>   USING INDEX PCTFREE 10 INITRANS 2 MAXTR
> ANS 255 COMPUTE STATISTICS 
>   STORAGE(INITIAL 40960 NEXT 40960 MINEXTENTS 1 MAXE
> XTENTS 505
>   PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
> 
>  TABLESPACE "TOOLS"  ENABLE, 
>  CONSTRAINT "TESTE_FK" FOREIGN KEY ("DBLINK", "CA
> TCHUP")
>   REFERENCES "SYSTEM"."DEF$_DESTINATION" 
("DBLINK", "CATCHUP")
> ENABLE
> 
>   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
>   STORAGE(I
> NITIAL 40960 NEXT 40960 MINEXTENTS 1 MAXEXTENTS 505
>   PCTINCREASE 50 FREELISTS 1
>  FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
>   TABLESPACE "TOOLS" 
> 
> ==> olha aí :
> 
> [EMAIL PROTECTED]:SQL>BEGIN
>   2  execute immediate(to_char(:x));
>   3  END;
>   4  /
> 
> Procedimento PL/SQL concluído com sucesso.
> 
> [EMAIL PROTECTED]:SQL>@desc teste
>  Nome  Nulo?Tipo
>  - 
> 
>  ENQ_TID   NOT NULL VARCHAR2(22)
>  STEP_NO   NOT NULL NUMBER
>  DBLINKNOT NULL VARCHAR2(128)
>  SCHEMA_NAMEVARCHAR2(30)
>  PACKAGE_NAME   VARCHAR2(30)
>  CATCHUPRAW(16)
> 
> []s
> 
>   Chiappa
> 
> 
==
> Palestrante ENPO.BR - acesse http://www.enpo-br.org/
> Instrutor Workshops ENPO/TWS - acesse 
http://www.twstecnologia.com.br/
> 
==
> 
> "O mundo precisa de mais gênios humildes e modestos - infelizmente
> somos muito poucos"
> 
> --- Em oracle_br@yahoogrupos.com.br, "Carlos martello"
>  escreveu
> >
> > Ah sim.
> > 
> > Então cara, vc não consegue pelo fato de um campo ou variável do
> tipo clob ter suas "particularidades". 
> > 
> > Eu sinceramente também não sei e até pesquisaria pra vc (até pq
> também estava precisando dessa informação), mas o certo seria fazer
> uma pesquisa no Google ou metalink sobre como converter clob em
> varchar por exemplo. Assim o problema seria resolvido ;).
> > 
> >  
> > 
> > Assim que algum dos dois encontrar a "fórmula" encaminhamos, 
beleza?
> > 
> >  
> > 
> >  
> > 
> >  
> > 
> > Carlos Martello
> > 
> > DBA Oracle / Consultor de Tecnologia
> > 
> > TEL:  55+21+3094-6250
> > 
> > Choice Technologies S/A - Inteligência em Energia
> > 
> > e-mail: carlosmartello@
> > 
> >  
> > 
> > De: oracle_br@yahoogrupos.com.br
> [mailto:[EMAIL PROTECTED] Em nome de Gabriel Herdt
> > Enviada em: quarta-feira, 19 de novembro de 2008 15:17
> > Para: oracle_br@yahoogrupos.com.br
> > Assunto: Re: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]
> > 
> >  
> > 
> > Eu não consigo passar o resultado do Get_dll para uma variavel e 
> > executar o conteudo dessa variavel. Tem outra forma de executar o 
> > Resultado do GET_DDL?
> > 
> > --- Em oracle_br@yahoogrupos.com.br
> <mailto:oracle_br%40yahoogrupos.com.br> , "Carlos Eduardo P. 
Martello" 
> >  escreveu
> > >
> > > Gabriel, até vi agora de uma forma mais atenta que vc já faz o 
> > execute
> > > immediate dentro da função.
> > > 
> > > 
> > > 
> > > Não entendi o que você quer então
> > > 
> > > 
> > > 
> > > É o execute immediate que não está funcionando?
> > > 
> > > 
> > > 
> > > 
> > > 
> > > Abs,
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > Carlos Martello
> > > 
> > > DBA Oracle / Consultor de Tecnologia
> > > 
> > > TEL: 55+21+3094-6250
> > > 
> > > Choice Technologies S/A - Inteligência em Energia
> > > 
> > > e-mail: carlosmartello@
> > > 
> > > 
> > > 
> > > De: oracle_br@yahoogrupos.com.br
> <mailto:oracle_br%40yahoogrupos.com.br>  
> > [mailto:oracle_br@yahoogrupos.com.br
> <mailto:oracle_br%40yahoogrupos.com.br> ] Em
> > >

Re: Res: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-21 Por tôpico Gabriel Herdt
Sem problemas se eu conseguir passo aqui para a lista. mas vou poder 
ver isso soh no final de semana. tem que estar pronto na quarta a 
funcao =(. Vou passar uma funcao que trabalha com read_file do oracle.
Ai se voce conseguir modificar ela para nosso objetivo ficaria grato.

PROCEDURE read_file
 (pNomeTab in Varchar2,
  pNomeCampo in VarChar2,
  pNomeArq in VarChar2,
  pNomeDire in VarChar2,
  P_ERRO OUT VARCHAR2)
 IS
  src_file BFILE := bfilename(pNomeDire, pNomeArq);
  dst_file BLOB;
  lgh_file BINARY_INTEGER;
  sNomeDire char; --create or replace directory DIRETO 
as 'C:\Sistemas\Gerencial\Figuras';

BEGIN

-- Zera Campo Blob
EXECUTE IMMEDIATE 'UPDATE '|| pNomeTab ||' SET ' ||pNomeCampo|| ' 
= EMPTY_BLOB()';
-- Trava no dado do campo
EXECUTE IMMEDIATE 'Select ' || pNomeCampo ||' From ' || pNomeTab 
||' ' into dst_file ;
-- Abre Arquivo
sys.dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
-- Determina Tamando em bytes do arquivo
lgh_file := sys.dbms_lob.getlength(src_file);
-- Ler arquivo
sys.dbms_lob.loadfromfile(dst_file, src_file, lgh_file);
-- Update no arquivo Blob
EXECUTE IMMEDIATE 'UPDATE '|| pNomeTab ||' SET ' ||pNomeCampo|| ' 
= :dst_file'
USING dst_file;
COMMIT;
-- Fecha Arquivo
sys.dbms_lob.fileclose(src_file);
EXCEPTION
  WHEN no_data_found THEN
rollback;
P_ERRO := '-20001, Não há dados';
  WHEN others THEN
rollback;
P_ERRO := '-20003, Não foi Possivel Gravar Arquivo';
END read_file;

--- Em oracle_br@yahoogrupos.com.br, Wellerson Leite de Araújo 
<[EMAIL PROTECTED]> escreveu
>
> Pessoal,
> 
> Neste caso eu acredito que o pacote DBMS_LOB possa ajudar. Nele 
vocês podem utilizar o procedimento READ para ler "pedaços" de uma 
variável do tipo LOB. Estes pedaços poderiam ser acumulados em uma 
variável VARCHAR2 que poderia ser passada para o comando EXECUTE 
IMMEDIATE.
> Claro que se o DDL exceder  o tamanho máximo que um VARCHAR2 pode 
amazenar, vocês podem ainda criar uma lógica que utilize um vetor, 
acredito que para a maioria dos DDLs retornados uma única variável 
será suficiente. O pacote DBMS_LOB também oferece a função GETLENGTH, 
que pode ser utilizada para testar a quantidade de caracteres 
presentes numa variável CLOB.
> Só mais um comentário. Neste caso, eu recomendaria uma procedure. 
Não é muito "elegante" utilizar parâmetros de OUT em uma function.
> 
> 
> Att,
> Wellerson
>  
> "Não vou deixar me embrutecer, eu acredito nos meus ideais. Podem 
até maltratar o meu coração, que meu espírito ninguém vai conseguir 
quebrar..."
> (Legião Urbana)
> 
> 
> "As idéias estão no chão, você tropeça e acha a solução..."
> (Titãs)
> 
> 
> 
> 
> ____
> De: Carlos martello <[EMAIL PROTECTED]>
> Para: oracle_br@yahoogrupos.com.br
> Enviadas: Quarta-feira, 19 de Novembro de 2008 17:14:31
> Assunto: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]
> 
> 
> Ah sim.
> 
> Então cara, vc não consegue pelo fato de um campo ou variável do 
tipo clob ter suas "particularidades" . 
> 
> Eu sinceramente também não sei e até pesquisaria pra vc (até pq 
também estava precisando dessa informação), mas o certo seria fazer 
uma pesquisa no Google ou metalink sobre como converter clob em 
varchar por exemplo. Assim o problema seria resolvido ;).
> 
> Assim que algum dos dois encontrar a "fórmula" encaminhamos, beleza?
> 
> Carlos Martello
> 
> DBA Oracle / Consultor de Tecnologia
> 
> TEL:  55+21+3094-6250
> 
> Choice Technologies S/A - Inteligência em Energia
> 
> e-mail: carlosmartello@ choice.com. br
> 
> De: [EMAIL PROTECTED] os.com.br [mailto:[EMAIL PROTECTED] 
os.com.br] Em nome de Gabriel Herdt
> Enviada em: quarta-feira, 19 de novembro de 2008 15:17
> Para: [EMAIL PROTECTED] os.com.br
> Assunto: Re: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]
> 
> Eu não consigo passar o resultado do Get_dll para uma variavel e 
> executar o conteudo dessa variavel. Tem outra forma de executar o 
> Resultado do GET_DDL?
> 
> --- Em [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%
40yahoogrupos .com.br> , "Carlos Eduardo P. Martello" 
>  escreveu
> >
> > Gabriel, até vi agora de uma forma mais atenta que vc já faz o 
> execute
> > immediate dentro da função.
> > 
> > 
> > 
> > Não entendi o que você quer então
> > 
> > 
> > 
> > É o execute immediate que não está funcionando?
> > 
> > 
> > 
> > 
> > 
> > Abs,
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Carlos Martello
> > 
> > DBA Orac

Re: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-20 Por tôpico jlchiappa
PROTECTED]:SQL>@desc teste
 Nome  Nulo?Tipo
 - 

 ENQ_TID   NOT NULL VARCHAR2(22)
 STEP_NO   NOT NULL NUMBER
 DBLINKNOT NULL VARCHAR2(128)
 SCHEMA_NAMEVARCHAR2(30)
 PACKAGE_NAME   VARCHAR2(30)
 CATCHUPRAW(16)

[]s

  Chiappa

==
Palestrante ENPO.BR - acesse http://www.enpo-br.org/
Instrutor Workshops ENPO/TWS - acesse http://www.twstecnologia.com.br/
==

"O mundo precisa de mais gênios humildes e modestos - infelizmente
somos muito poucos"

--- Em oracle_br@yahoogrupos.com.br, "Carlos martello"
<[EMAIL PROTECTED]> escreveu
>
> Ah sim.
> 
> Então cara, vc não consegue pelo fato de um campo ou variável do
tipo clob ter suas "particularidades". 
> 
> Eu sinceramente também não sei e até pesquisaria pra vc (até pq
também estava precisando dessa informação), mas o certo seria fazer
uma pesquisa no Google ou metalink sobre como converter clob em
varchar por exemplo. Assim o problema seria resolvido ;).
> 
>  
> 
> Assim que algum dos dois encontrar a "fórmula" encaminhamos, beleza?
> 
>  
> 
>  
> 
>  
> 
> Carlos Martello
> 
> DBA Oracle / Consultor de Tecnologia
> 
> TEL:  55+21+3094-6250
> 
> Choice Technologies S/A - Inteligência em Energia
> 
> e-mail: [EMAIL PROTECTED]
> 
>  
> 
> De: oracle_br@yahoogrupos.com.br
[mailto:[EMAIL PROTECTED] Em nome de Gabriel Herdt
> Enviada em: quarta-feira, 19 de novembro de 2008 15:17
> Para: oracle_br@yahoogrupos.com.br
> Assunto: Re: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]
> 
>  
> 
> Eu não consigo passar o resultado do Get_dll para uma variavel e 
> executar o conteudo dessa variavel. Tem outra forma de executar o 
> Resultado do GET_DDL?
> 
> --- Em oracle_br@yahoogrupos.com.br
<mailto:oracle_br%40yahoogrupos.com.br> , "Carlos Eduardo P. Martello" 
>  escreveu
> >
> > Gabriel, até vi agora de uma forma mais atenta que vc já faz o 
> execute
> > immediate dentro da função.
> > 
> > 
> > 
> > Não entendi o que você quer então
> > 
> > 
> > 
> > É o execute immediate que não está funcionando?
> > 
> > 
> > 
> > 
> > 
> > Abs,
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Carlos Martello
> > 
> > DBA Oracle / Consultor de Tecnologia
> > 
> > TEL: 55+21+3094-6250
> > 
> > Choice Technologies S/A - Inteligência em Energia
> > 
> > e-mail: carlosmartello@
> > 
> > 
> > 
> > De: oracle_br@yahoogrupos.com.br
<mailto:oracle_br%40yahoogrupos.com.br>  
> [mailto:oracle_br@yahoogrupos.com.br
<mailto:oracle_br%40yahoogrupos.com.br> ] Em
> > nome de Gabriel Herdt
> > Enviada em: terça-feira, 18 de novembro de 2008 22:33
> > Para: oracle_br@yahoogrupos.com.br
<mailto:oracle_br%40yahoogrupos.com.br> 
> > Assunto: Re: RES: [oracle_br] Ajuda em procedure[URGENTE]
> > 
> > 
> > 
> > assim obrigado vou tentar, maas eu quero executar p dll gerado pela 
> > funcao. pode me dizer como?
> > --- Em oracle_br@yahoogrupos.com.br
<mailto:oracle_br%40yahoogrupos.com.br>  <mailto:oracle_br%
> 40yahoogrupos.com.br>
> > , "Carlos Eduardo P. Martello" 
> >  escreveu
> > >
> > > Gabriel,
> > > 
> > > 
> > > 
> > > Tente o seguinte:
> > > 
> > > 
> > > 
> > > 
> > > 
> > > Declare
> > > 
> > > Vsql varchar2(2000) :='';
> > > 
> > > Begin
> > > 
> > > Vsql := fn_compara;
> > > 
> > > Execute immediate vsql;
> > > 
> > > End;
> > > 
> > > 
> > > 
> > > Se ao invés de vc retornar um clob, retornar um varchar2, ajuda.
> > > 
> > > 
> > > 
> > > Abs,
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > Carlos Martello
> > > 
> > > DBA Oracle / Consultor de Tecnologia
> > > 
> > > TEL: 55+21+3094-6250
> > > 
> > > Choice Technologies S/A - Inteligência em Energia
> > > 
> > > e-mail: carlosmart

Res: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-19 Por tôpico Wellerson Leite de Araújo
Pessoal,

Neste caso eu acredito que o pacote DBMS_LOB possa ajudar. Nele vocês podem 
utilizar o procedimento READ para ler "pedaços" de uma variável do tipo LOB. 
Estes pedaços poderiam ser acumulados em uma variável VARCHAR2 que poderia ser 
passada para o comando EXECUTE IMMEDIATE.
Claro que se o DDL exceder  o tamanho máximo que um VARCHAR2 pode amazenar, 
vocês podem ainda criar uma lógica que utilize um vetor, acredito que para a 
maioria dos DDLs retornados uma única variável será suficiente. O pacote 
DBMS_LOB também oferece a função GETLENGTH, que pode ser utilizada para testar 
a quantidade de caracteres presentes numa variável CLOB.
Só mais um comentário. Neste caso, eu recomendaria uma procedure. Não é muito 
"elegante" utilizar parâmetros de OUT em uma function.


Att,
Wellerson
 
"Não vou deixar me embrutecer, eu acredito nos meus ideais. Podem até maltratar 
o meu coração, que meu espírito ninguém vai conseguir quebrar..."
(Legião Urbana)


"As idéias estão no chão, você tropeça e acha a solução..."
(Titãs)





De: Carlos martello <[EMAIL PROTECTED]>
Para: oracle_br@yahoogrupos.com.br
Enviadas: Quarta-feira, 19 de Novembro de 2008 17:14:31
Assunto: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]


Ah sim.

Então cara, vc não consegue pelo fato de um campo ou variável do tipo clob ter 
suas "particularidades" . 

Eu sinceramente também não sei e até pesquisaria pra vc (até pq também estava 
precisando dessa informação), mas o certo seria fazer uma pesquisa no Google ou 
metalink sobre como converter clob em varchar por exemplo. Assim o problema 
seria resolvido ;).

Assim que algum dos dois encontrar a "fórmula" encaminhamos, beleza?

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: carlosmartello@ choice.com. br

De: [EMAIL PROTECTED] os.com.br [mailto:[EMAIL PROTECTED] os.com.br] Em nome de 
Gabriel Herdt
Enviada em: quarta-feira, 19 de novembro de 2008 15:17
Para: [EMAIL PROTECTED] os.com.br
Assunto: Re: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

Eu não consigo passar o resultado do Get_dll para uma variavel e 
executar o conteudo dessa variavel. Tem outra forma de executar o 
Resultado do GET_DDL?

--- Em [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> , 
"Carlos Eduardo P. Martello" 
 escreveu
>
> Gabriel, até vi agora de uma forma mais atenta que vc já faz o 
execute
> immediate dentro da função.
> 
> 
> 
> Não entendi o que você quer então
> 
> 
> 
> É o execute immediate que não está funcionando?
> 
> 
> 
> 
> 
> Abs,
> 
> 
> 
> 
> 
> 
> 
> Carlos Martello
> 
> DBA Oracle / Consultor de Tecnologia
> 
> TEL: 55+21+3094-6250
> 
> Choice Technologies S/A - Inteligência em Energia
> 
> e-mail: carlosmartello@ ...
> 
> 
> 
> De: [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> 
[mailto:[EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> ] 
Em
> nome de Gabriel Herdt
> Enviada em: terça-feira, 18 de novembro de 2008 22:33
> Para: [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> 
> Assunto: Re: RES: [oracle_br] Ajuda em procedure[URGENTE]
> 
> 
> 
> assim obrigado vou tentar, maas eu quero executar p dll gerado pela 
> funcao. pode me dizer como?
> --- Em [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br>  
> <mailto:oracle_ br%
40yahoogrupos. com.br>
> , "Carlos Eduardo P. Martello" 
>  escreveu
> >
> > Gabriel,
> > 
> > 
> > 
> > Tente o seguinte:
> > 
> > 
> > 
> > 
> > 
> > Declare
> > 
> > Vsql varchar2(2000) :='';
> > 
> > Begin
> > 
> > Vsql := fn_compara;
> > 
> > Execute immediate vsql;
> > 
> > End;
> > 
> > 
> > 
> > Se ao invés de vc retornar um clob, retornar um varchar2, ajuda.
> > 
> > 
> > 
> > Abs,
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Carlos Martello
> > 
> > DBA Oracle / Consultor de Tecnologia
> > 
> > TEL: 55+21+3094-6250
> > 
> > Choice Technologies S/A - Inteligência em Energia
> > 
> > e-mail: carlosmartello@
> > 
> > 
> > 
> > De: [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br>  
> > <mailto:oracle_ br%
40yahoogrupos. com.br> 
> [mailto:[EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> 
>  <mailto:oracle_ br%
40yahoogrupos. com.br>
> ] Em
> > nome de Gabriel H

RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-19 Por tôpico Carlos martello
Ah sim.

Então cara, vc não consegue pelo fato de um campo ou variável do tipo clob ter 
suas "particularidades". 

Eu sinceramente também não sei e até pesquisaria pra vc (até pq também estava 
precisando dessa informação), mas o certo seria fazer uma pesquisa no Google ou 
metalink sobre como converter clob em varchar por exemplo. Assim o problema 
seria resolvido ;).

 

Assim que algum dos dois encontrar a "fórmula" encaminhamos, beleza?

 

 

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Gabriel 
Herdt
Enviada em: quarta-feira, 19 de novembro de 2008 15:17
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

 

Eu não consigo passar o resultado do Get_dll para uma variavel e 
executar o conteudo dessa variavel. Tem outra forma de executar o 
Resultado do GET_DDL?

--- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> , 
"Carlos Eduardo P. Martello" 
<[EMAIL PROTECTED]> escreveu
>
> Gabriel, até vi agora de uma forma mais atenta que vc já faz o 
execute
> immediate dentro da função.
> 
> 
> 
> Não entendi o que você quer então
> 
> 
> 
> É o execute immediate que não está funcionando?
> 
> 
> 
> 
> 
> Abs,
> 
> 
> 
> 
> 
> 
> 
> Carlos Martello
> 
> DBA Oracle / Consultor de Tecnologia
> 
> TEL: 55+21+3094-6250
> 
> Choice Technologies S/A - Inteligência em Energia
> 
> e-mail: [EMAIL PROTECTED]
> 
> 
> 
> De: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>  
[mailto:oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> ] 
Em
> nome de Gabriel Herdt
> Enviada em: terça-feira, 18 de novembro de 2008 22:33
> Para: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> 
> Assunto: Re: RES: [oracle_br] Ajuda em procedure[URGENTE]
> 
> 
> 
> assim obrigado vou tentar, maas eu quero executar p dll gerado pela 
> funcao. pode me dizer como?
> --- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>  
> <mailto:oracle_br%
40yahoogrupos.com.br>
> , "Carlos Eduardo P. Martello" 
>  escreveu
> >
> > Gabriel,
> > 
> > 
> > 
> > Tente o seguinte:
> > 
> > 
> > 
> > 
> > 
> > Declare
> > 
> > Vsql varchar2(2000) :='';
> > 
> > Begin
> > 
> > Vsql := fn_compara;
> > 
> > Execute immediate vsql;
> > 
> > End;
> > 
> > 
> > 
> > Se ao invés de vc retornar um clob, retornar um varchar2, ajuda.
> > 
> > 
> > 
> > Abs,
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Carlos Martello
> > 
> > DBA Oracle / Consultor de Tecnologia
> > 
> > TEL: 55+21+3094-6250
> > 
> > Choice Technologies S/A - Inteligência em Energia
> > 
> > e-mail: carlosmartello@
> > 
> > 
> > 
> > De: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>  
> > <mailto:oracle_br%
40yahoogrupos.com.br> 
> [mailto:oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>  
> <mailto:oracle_br%
40yahoogrupos.com.br>
> ] Em
> > nome de Gabriel Herdt
> > Enviada em: segunda-feira, 17 de novembro de 2008 16:49
> > Para: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>  
> > <mailto:oracle_br%
40yahoogrupos.com.br>
> 
> > Assunto: [oracle_br] Ajuda em procedure[URGENTE]
> > 
> > 
> > 
> > Pessoal como executar o resultado de DBMS_METADATA.get_ddl(...) 
em 
> > uma Function? Segue abaixo minmha Function
> > 
> > FUNCTION FN_COMPARA (
> > pr_usera IN VARCHAR2,
> > pr_userb IN VARCHAR2,
> > pr_erro OUT VARCHAR2
> > )
> > RETURN VARCHAR2
> > IS
> > vtable_name VARCHAR2 (30);
> > DDL CLOB;
> > i INTEGER;
> > a INTEGER;
> > x INTEGER;
> > --get dbms_metadata.get_ddl
> > (object_type,name,schema,version,model,transform);
> > -- variable_name datatype;
> > BEGIN
> > vtable_name := '';
> > i := 0;
> > x := 0;
> > -- grant select on all_tables to TCCB;
> > 
> > FOR tabela IN (SELECT table_name
> > FROM all_tables
> > WHERE owner IN (UPPER ('tcca'), UPPER ('TCCB'))
> > AND table_name NOT IN (SELECT table_name
> > FROM all_tables
> > WHERE owner = 'TCCB'))
> > LOOP
> > vtable_name := tabela.Table_name;
> > 
> > DDL := DBMS_METADATA.get_ddl ('TABLE', vtable_name, pr_usera);
> > EXECUTE IMMEDIATE TO_CHAR (DDL);
> > 
> > COMMIT;
> > END LOOP;
> > 
> > RETURN TO_CHAR (DDL);
> > EXCEPTION
> > WHEN OTHERS
> > THEN
> > pr_erro := ('Erro: ' ||pr_erro||SQLERRM);
> > END;
> > 
> > 
> > 
> > 
> > 
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> 
> 
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>

 



[As partes desta mensagem que não continham texto foram removidas]



Re: RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-19 Por tôpico Gabriel Herdt
Eu não consigo passar o resultado do Get_dll para uma variavel e 
executar o conteudo dessa variavel. Tem outra forma de executar o 
Resultado do GET_DDL?

--- Em oracle_br@yahoogrupos.com.br, "Carlos Eduardo P. Martello" 
<[EMAIL PROTECTED]> escreveu
>
> Gabriel, até vi agora de uma forma mais atenta que vc já faz o 
execute
> immediate dentro da função.
> 
>  
> 
> Não entendi o que você quer então
> 
>  
> 
> É o execute immediate que não está funcionando?
> 
>  
> 
>  
> 
> Abs,
> 
>  
> 
>  
> 
>  
> 
> Carlos Martello
> 
> DBA Oracle / Consultor de Tecnologia
> 
> TEL:  55+21+3094-6250
> 
> Choice Technologies S/A - Inteligência em Energia
> 
> e-mail: [EMAIL PROTECTED]
> 
>  
> 
> De: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] Em
> nome de Gabriel Herdt
> Enviada em: terça-feira, 18 de novembro de 2008 22:33
> Para: oracle_br@yahoogrupos.com.br
> Assunto: Re: RES: [oracle_br] Ajuda em procedure[URGENTE]
> 
>  
> 
> assim obrigado vou tentar, maas eu quero executar p dll gerado pela 
> funcao. pode me dizer como?
> --- Em oracle_br@yahoogrupos.com.br 
> , "Carlos Eduardo P. Martello" 
>  escreveu
> >
> > Gabriel,
> > 
> > 
> > 
> > Tente o seguinte:
> > 
> > 
> > 
> > 
> > 
> > Declare
> > 
> > Vsql varchar2(2000) :='';
> > 
> > Begin
> > 
> > Vsql := fn_compara;
> > 
> > Execute immediate vsql;
> > 
> > End;
> > 
> > 
> > 
> > Se ao invés de vc retornar um clob, retornar um varchar2, ajuda.
> > 
> > 
> > 
> > Abs,
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Carlos Martello
> > 
> > DBA Oracle / Consultor de Tecnologia
> > 
> > TEL: 55+21+3094-6250
> > 
> > Choice Technologies S/A - Inteligência em Energia
> > 
> > e-mail: carlosmartello@
> > 
> > 
> > 
> > De: oracle_br@yahoogrupos.com.br   
> [mailto:oracle_br@yahoogrupos.com.br 
> ] Em
> > nome de Gabriel Herdt
> > Enviada em: segunda-feira, 17 de novembro de 2008 16:49
> > Para: oracle_br@yahoogrupos.com.br 
> 
> > Assunto: [oracle_br] Ajuda em procedure[URGENTE]
> > 
> > 
> > 
> > Pessoal como executar o resultado de DBMS_METADATA.get_ddl(...) 
em 
> > uma Function? Segue abaixo minmha Function
> > 
> > FUNCTION FN_COMPARA (
> > pr_usera IN VARCHAR2,
> > pr_userb IN VARCHAR2,
> > pr_erro OUT VARCHAR2
> > )
> > RETURN VARCHAR2
> > IS
> > vtable_name VARCHAR2 (30);
> > DDL CLOB;
> > i INTEGER;
> > a INTEGER;
> > x INTEGER;
> > --get dbms_metadata.get_ddl
> > (object_type,name,schema,version,model,transform);
> > -- variable_name datatype;
> > BEGIN
> > vtable_name := '';
> > i := 0;
> > x := 0;
> > -- grant select on all_tables to TCCB;
> > 
> > FOR tabela IN (SELECT table_name
> > FROM all_tables
> > WHERE owner IN (UPPER ('tcca'), UPPER ('TCCB'))
> > AND table_name NOT IN (SELECT table_name
> > FROM all_tables
> > WHERE owner = 'TCCB'))
> > LOOP
> > vtable_name := tabela.Table_name;
> > 
> > DDL := DBMS_METADATA.get_ddl ('TABLE', vtable_name, pr_usera);
> > EXECUTE IMMEDIATE TO_CHAR (DDL);
> > 
> > COMMIT;
> > END LOOP;
> > 
> > RETURN TO_CHAR (DDL);
> > EXCEPTION
> > WHEN OTHERS
> > THEN
> > pr_erro := ('Erro: ' ||pr_erro||SQLERRM);
> > END;
> > 
> > 
> > 
> > 
> > 
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> 
>  
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




RES: RES: [oracle_br] Ajuda em procedure[URGENTE]

2008-11-19 Por tôpico Carlos Eduardo P. Martello
Gabriel, até vi agora de uma forma mais atenta que vc já faz o execute
immediate dentro da função.

 

Não entendi o que você quer então

 

É o execute immediate que não está funcionando?

 

 

Abs,

 

 

 

Carlos Martello

DBA Oracle / Consultor de Tecnologia

TEL:  55+21+3094-6250

Choice Technologies S/A - Inteligência em Energia

e-mail: [EMAIL PROTECTED]

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Gabriel Herdt
Enviada em: terça-feira, 18 de novembro de 2008 22:33
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: RES: [oracle_br] Ajuda em procedure[URGENTE]

 

assim obrigado vou tentar, maas eu quero executar p dll gerado pela 
funcao. pode me dizer como?
--- Em oracle_br@yahoogrupos.com.br 
, "Carlos Eduardo P. Martello" 
<[EMAIL PROTECTED]> escreveu
>
> Gabriel,
> 
> 
> 
> Tente o seguinte:
> 
> 
> 
> 
> 
> Declare
> 
> Vsql varchar2(2000) :='';
> 
> Begin
> 
> Vsql := fn_compara;
> 
> Execute immediate vsql;
> 
> End;
> 
> 
> 
> Se ao invés de vc retornar um clob, retornar um varchar2, ajuda.
> 
> 
> 
> Abs,
> 
> 
> 
> 
> 
> 
> 
> Carlos Martello
> 
> DBA Oracle / Consultor de Tecnologia
> 
> TEL: 55+21+3094-6250
> 
> Choice Technologies S/A - Inteligência em Energia
> 
> e-mail: [EMAIL PROTECTED]
> 
> 
> 
> De: oracle_br@yahoogrupos.com.br   
[mailto:oracle_br@yahoogrupos.com.br 
] Em
> nome de Gabriel Herdt
> Enviada em: segunda-feira, 17 de novembro de 2008 16:49
> Para: oracle_br@yahoogrupos.com.br 

> Assunto: [oracle_br] Ajuda em procedure[URGENTE]
> 
> 
> 
> Pessoal como executar o resultado de DBMS_METADATA.get_ddl(...) em 
> uma Function? Segue abaixo minmha Function
> 
> FUNCTION FN_COMPARA (
> pr_usera IN VARCHAR2,
> pr_userb IN VARCHAR2,
> pr_erro OUT VARCHAR2
> )
> RETURN VARCHAR2
> IS
> vtable_name VARCHAR2 (30);
> DDL CLOB;
> i INTEGER;
> a INTEGER;
> x INTEGER;
> --get dbms_metadata.get_ddl
> (object_type,name,schema,version,model,transform);
> -- variable_name datatype;
> BEGIN
> vtable_name := '';
> i := 0;
> x := 0;
> -- grant select on all_tables to TCCB;
> 
> FOR tabela IN (SELECT table_name
> FROM all_tables
> WHERE owner IN (UPPER ('tcca'), UPPER ('TCCB'))
> AND table_name NOT IN (SELECT table_name
> FROM all_tables
> WHERE owner = 'TCCB'))
> LOOP
> vtable_name := tabela.Table_name;
> 
> DDL := DBMS_METADATA.get_ddl ('TABLE', vtable_name, pr_usera);
> EXECUTE IMMEDIATE TO_CHAR (DDL);
> 
> COMMIT;
> END LOOP;
> 
> RETURN TO_CHAR (DDL);
> EXCEPTION
> WHEN OTHERS
> THEN
> pr_erro := ('Erro: ' ||pr_erro||SQLERRM);
> END;
> 
> 
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>

 



[As partes desta mensagem que não continham texto foram removidas]