[firebase-br] SQL

Reijanio Nunes Ribeiro rnribeiro em gmail.com
Sex Maio 8 17:33:56 -03 2009


não seria mais facil criar uma stored procedure não?????? e apenas chamar os
paraetros no delphi

2009/5/8 Sandro Souza <escovadordebits em gmail.com>

> Bom dia/tarde Luis.
>
> Grande Luis, uma query nativa do Delphi não suporta um script dessa forma.
>
> No caso do Firebird, utilize a sintaxe do EXECUTE BLOCK dentro da query e
> chame/execute o método "ExecSQL" da respectiva query, por exemplo:
>
> IBQuery1.SQL.Clear;
> IBQuery1.SQL.Add('EXECUTE BLOCK RETURNS(CAMPO1 INTEGER, CAMPO2 VARCHAR(30),
> ....)AS');
> IBQuery1.SQL.Add('BEGIN');
> IBQuery1.SQL.Add('  INSERT INTO .........');
> IBQuery1.SQL.Add('  UPDATE .........');
> IBQuery1.SQL.Add('  DELETE FROM .........');
> IBQuery1.SQL.Add('  FOR SELECT ...... INTO :CAMPO1, :CAMPO2, ...... DO');
> IBQuery1.SQL.Add('    SUSPEND;');
> IBQuery1.SQL.Add('END');
> IBQuery1.Open;
> while not IBQuery1.EOF do
> begin
>  for Indice := 0 to IBQuery.FieldCount - 1 do
>    ShowMessage(IBQuery.Fields[Indice].FieldName + ' = [' +
> IBQuery.Fields[Indice].AsString + ']');
> end; // while
> IBQuery1.Close;
>
> Ou ainda se preferir:
>
> IBQuery1.SQL.Text :=
>  'EXECUTE BLOCK RETURNS(CAMPO1 INTEGER, CAMPO2 VARCHAR(30), ....)AS'#10 +
>  'BEGIN'#10 +
>  '  INSERT INTO .........'#10 +
>  '  UPDATE .........'#10 +
>  '  DELETE FROM .........'#10 +
>  '  FOR SELECT ...... INTO :CAMPO1, :CAMPO2, ...... DO'#10 +
>  '    SUSPEND;'#10 +
>  'END';
> IBQuery1.Open;
> while not IBQuery1.EOF do
> begin
>  for Indice := 0 to IBQuery.FieldCount - 1 do
>    ShowMessage(IBQuery.Fields[Indice].FieldName + ' = [' +
> IBQuery.Fields[Indice].AsString + ']');
> end; // while
> IBQuery1.Close;
>
> Caso o SELECT não funcione dessa forma, remova-o, execure o código da query
> pelo método ExecSQL e depois refaça o código SQL (ou utilize outra query)
> apenas com o SELECT a abra a query normalmente.
>
> Espero ter ajudado mais que atrapalhado. :D
>
> 2009/5/8 <luis em bmsoft.com.br>
>
> > Pessoal,
> >
> > Estou migrando um sistema para Firebird.
> > No sistema antigo eu usava o DBisam, e tinha uns scripts mais ou menos
> > assim:
> >
> > UPDATE CLIENTES SET TIPO = 'J' WHERE CNPJ <> '';
> > SELECT * FROM CLIENTES WHERE TIPO = 'J';
> >
> > tudo no mesmo script.
> >
> > Não consigo repetir isso no firebird no IBexpert.
> >
> > Alguém poderia me dar uma dica?
> >
> > --
> > _________________________________________
> > BMSOFT - SERVIÇOS DE INFORMÁTICA LTDA.
> > Luis C. de Azevedo
> > Analista de Sistemas
> > (47)8848-9722
> >
> >
> >
> >
> >
> > ______________________________________________
> > 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
> >
> ______________________________________________
> 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