Fórum clausula Returning Firebird #393126
29/12/2010
0
Ale.sjrp
Curtir tópico
+ 0Posts
29/12/2010
Ricardo Araujo
estava vendo a documentação do firebird encontrei isto da uma olhada.
CREATE PROCEDURE SEARCH_ACTOR(NAME VARCHAR(50))RETURNS (TITLE VARCHAR(50),ACTOR VARCHAR(50),PRICE NUMERIC(18,2))ASDeclare variable i integer;Declare variable SQL varchar(1000);BEGINi=10;Sql = 'select first '|| :i ||' TITLE,ACTOR,PRICE from productwhere actor containing '''||name||''''FORexecute statement :sqlINTO :TITLE,:ACTOR,:PRICEDOBEGINif (price>30) then price=30;SUSPEND;ENDEND
só não sei se ai ajuda.rbbarretorbbarreto@hotmail.com
Gostei + 0
29/12/2010
Ale.sjrp
Gostei + 0
29/12/2010
João Sobrinho
Gostei + 0
30/12/2010
Ricardo Araujo
Exemplo :
var
lcRetorno : string;
begin
IbQuery.close;
IBQuery1.sql.Clear;
IbQuery.sql.Add('INSERT INTO CLIENTE ');
IbQuery.sql.Add('(NOME, ENDERECO, BAIRRO, CIDADE)');
IbQuery.sql.Add('VALUES');
IbQuery.sql.Add('(:NOME, :ENDERECO, :BAIRRO, :CIDADE)');
IbQuery.ParabyName('NOME').AsString := FNome;
IbQuery.ParabyName('ENDERECO').AsString := FEndereco;
IbQuery.ParabyName('BAIRRO').AsString := FBairro;
IbQuery.ParabyName('CIDADE').AsString := FCidade;
IBQuery1.ExecSQL;
// agora vou monta o sql para pegar o último código.
// você também pode montar um metodo que retorna os codigo de todas a tabelas.
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('select max(cd_cod) from CD_CLIENTE');
IBQuery1.Open;
lcRetorno := IntToStr( IBQuery1.FieldByName('MAX').AsInteger);
espero ter ajudado
rbbarreto
rbbarreto@hotmail.com
Gostei + 0
03/01/2011
Ale.sjrp
Gostei + 0
04/05/2011
Julio Develis
Gostei + 0
08/09/2011
Filipe Sousa
Segundo as regras definidas do firebird para instruções de insert, a cláusula "returning" não está disponível em ESQL (Embedded SQL, ou melhor instruções SQL escritas através de uma linguagem de programação), que é o seu caso.
Como solução, você terá que criar uma PSQL, ou uma procedure com um parâmetro de saída.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)