Migrar SP de Firebird para Oracle

Oracle

28/02/2008

ola pessoal,
estou comecando agora no oracle, antes usuava firebird, tenho uma procedure feita em firebird que preciso migrar para oracle fiz algumas correcoes mais ainda não esta funcionando, segue abaixo o codigo:


create or replace PROCEDURE "LISTA_LUGAR" 
( 
  "PCEP" IN VARCHAR2, 
  "PESTADO" OUT VARCHAR2, 
  "PCIDADE" OUT VARCHAR2, 
  "PBAIRRO" OUT VARCHAR2, 
  "PENDERECO" OUT VARCHAR2, 
  "PCEPS" OUT VARCHAR2, 
  "PCOMPLEMENTO" OUT VARCHAR 
) 
AS 
begin 

select a.uf_sigla,    
b.cidade_descricao, 
c.bairro_descricao, 
d.endereco_logradouro, 
d.endereco_cep, 
d.endereco_complemento 
from uf a,cidade b, bairro c,  endereco d 

where (a.uf_codigo = b.uf_codigo) and (b.cidade_codigo = c.cidade_codigo) 
   and (c.bairro_codigo = d.bairro_codigo) and  (d.endereco_cep = pcep) 

   order by c.bairro_descricao,d.endereco_logradouro,d.endereco_cep 
   into pestado,pcidade,pbairro,pendereco,pceps,pcomplemento; 

end "LISTA_LUGAR"; 


um forte abarco a todos
alineri


Alineri

Alineri

Curtidas 0

Respostas

Lucas Silva

Lucas Silva

28/02/2008

Aline,
Boa tarde...

O erro acontece ao compilar a procedure no oracle ou ela não retorna os resultados esperados?


T+,
Lucas.


GOSTEI 0
Alineri

Alineri

28/02/2008

Ola Pessoal,

Consegui acertar a procedure. so que nao sei como chamar essa procedure via aplicacao delphi, segue abaixo a procedure

create or replace PROCEDURE "LISTA_LUGAR" 
(
  "PCEP" IN VARCHAR2,
  "PESTADO" OUT VARCHAR2,
  "PCIDADE" OUT VARCHAR2,
  "PBAIRRO" OUT VARCHAR2,
  "PENDERECO" OUT VARCHAR2,
  "PCEPS" OUT VARCHAR2,
  "PCOMPLEMENTO" OUT VARCHAR2 
)
AS

begin
select a.uf_sigla, 
b.cidade_descricao,
c.bairro_descricao,
d.endereco_logradouro,
d.endereco_cep,
d.endereco_complemento
into 
pestado,
pcidade,
pbairro,
pendereco,
pceps,
pcomplemento
from uf a,cidade b, bairro c,  endereco d

where (a.uf_codigo = b.uf_codigo) and (b.cidade_codigo = c.cidade_codigo)  and (c.bairro_codigo = d.bairro_codigo) and  (d.endereco_cep = pcep)
order by c.bairro_descricao,d.endereco_logradouro,d.endereco_cep;
   
end "LISTA_LUGAR";


com uma ajuda que recebi de outro forum eu consigo executar essa procedure dessa forma diretamente no oracle ( a versao que estou utilizando e a Oracle XE )

segue abaixo o codigo:

DECLARE 
  V_ESTADO   VARCHAR2(10); 
  V_CIDADE   VARCHAR2(200); 
  V_BAIRRO   VARCHAR2(100); 
  V_ENDERECO VARCHAR2(200); 
  V_CEPS     VARCHAR2(200); 
  V_COMPLEMENTO VARCHAR2(100); 
BEGIN 

   LISTA_LUGAR(PCEP      => ´123456´, 
               PESTADO   => V_ESTADO, 
               PCIDADE   => V_CIDADE, 
               PBAIRRO   => V_BAIRRO, 
               PENDERECO => V_ENDERECO, 
               PCEPS     => V_CEPS, 
               PCOMPLEMENTO => V_COMPLEMENTO); 
                
  dbms_output.put_line(´O Endereço é: ´||V_ENDERECO);              

END; 


um forte abraco a todos
alineri


GOSTEI 0
Flyskin

Flyskin

28/02/2008

no delphi voce pode utilizar tanto num componente SQLQuery como também um SQLStoredProc, os dois funcionam com algumas diferenças e daí vai depender de qual prefere utilizar...


GOSTEI 0
Alineri

Alineri

28/02/2008

oi flyskin, esse realmente e que esta sendo o meu problema.

com o adostoredproc nao consigo rodar essa procedura, da uma mensagem de erro informando que o provedor nao tem suporte para esse tipo de resultado, e no adoquery nao sei como fazer para funcionar essa procedure, ja tentei varias formas, e nao consigo executa-la, no oracle vai, oq eu pode ser ?

um forte abraco a todos
alineri


GOSTEI 0
Flyskin

Flyskin

28/02/2008

já tentou executar a query com o exec direct?

não sei se este recurso é somente do dbexpress ou se tem tb no ado... dá uma olhada a respeito, poi ele roda diretamente no servidor...


GOSTEI 0
POSTAR