[firebase-br] SQL

Sandro Souza escovadordebits em gmail.com
Sex Maio 8 16:25:23 -03 2009


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
>



Mais detalhes sobre a lista de discussão lista