[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