[firebase-br] Executando SELECT em banco externo

Gladiston Santana gladiston em vidy.com.br
Qua Jul 3 09:53:20 -03 2013


Vou apenas passar um exemplo de procedure que uso que acessa uma base de
dados de cep externa (que foi obtido aqui mesmo na lista).
Daí você compara o que tem de diferente :

CREATE OR ALTER PROCEDURE GET_CEP (
    p_cep varchar(8) = '')
returns (
    cep char(8),
    logradouro varchar(125),
    bairro varchar(70),
    cidade varchar(70),
    uf char(2),
    last_update timestamp)
as
declare variable l_conn_string varchar(255) =
'localhost:c:\xxxxx\xxxx\cep.fdb';
declare variable l_conn_user varchar(30) = 'SYSDBA';
declare variable l_conn_password varchar(30) = 'masterkey';
declare variable l_conn_role varchar(30) = 'rdb$admin';
declare variable l_sql varchar(1024);
begin
  cep='';
  logradouro='';
  bairro='';
  cidade='';
  uf='';
  last_update='1980-01-01';

  l_sql='select cep, logradouro, bairro, cidade, uf, last_update from ceps
';
  if (:p_cep<>'') then
  begin
    if ((char_length(:p_cep)<8) and (position ('%' in :p_cep)=0)) then
p_cep=:p_cep||'%';
    if (position ('%' in :p_cep)=0)
    then l_sql=:l_sql||'where cep like '''||:p_cep||'''';
    else l_sql=:l_sql||'where cep='''||:p_cep||'''';
  end
  for execute statement l_sql
  on external :l_conn_string
    as user :l_conn_user
    password :l_conn_password
    role :l_conn_role
  into :cep, :logradouro, :bairro, :cidade, :uf, :last_update do
  begin
    suspend;
  end

end


2013/6/27 Bruno Dias <brunodila em gmail.com>

> Bom dia!!
>
> Criei uma procedure que acessa uma tabela em um banco externo, sendo que ao
> executá-la o Firebird me exibe a seguinte crítica: "*Unsuccessful execution
> caused by system error that does not preclude successful execution of
> subsequent statements. Missing parameter for the number of bytes to be
> skipped. -sql_dialect set database dialect n.*"
>
>
> Como eu defino o dialeto? Sendo que já criei ambos os bancos com o dialeto
> 3.
>
> PROCEDURE:
>
>
> create or alter procedure SP_TESTE
> RETURNS(
>   id integer
> )
> as
> begin
> FOR EXECUTE STATEMENT 'SELECT ID FROM TB_ALTERACAO'
> ON EXTERNAL DATA SOURCE '192.168.0.130:/BD/TABELAO.FDB' AS USER 'SYSDBA'
> PASSWORD 'masterkey'
> INTO :id
> do
> begin
>   suspend;
> end
> end
>
>
> At.,
>
> Bruno Lage
> Lagix.com.br
> Skype: brunodila
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista