Fórum Traduçao de sql para firebird #18686
05/03/2010
0
(id integer primary key identity (1,1),
name varchar (100))
go
procedure de insert do sqlserver nessa proc eu vou passar apenas o campo name e ela vai me retornar o id create procedure pri_tb_Teste
(@name varchar (100) ,
@id int output )
as
begin
insert into tb_Teste (name) values (@name)
end como eu faço a procedure de insert me dar um retorno no momento do insert ? outra pergunta la do componente stored_proc eu vou poder usar esse retorno como faço no sql server ?
Carlos Faria
Curtir tópico
+ 0Posts
05/03/2010
Wesley Yamazack
Boa noite, poderia ser mais claro no que você esta precisando ? É no SQL Server mesmo que você qyuer fazer a procedure ? Você não esta usando ClientDataSet? Pq usar Store Proc ? achei que você tivesse largado isso de mão, e estivesse trabalhando somente com CDS
Um abraço
Wesley Y
Gostei + 0
05/03/2010
Carlos Faria
Gostei + 0
08/03/2010
Wesley Yamazack
O que você vai fazer com estas 4 tabelas ? É um mestre detalhe ? Você precisa do ID para poder gravar como chave estrangeira nas outras 3 tabelas ? Se for isso, o que você precisa é fazer um mestre detalhe com o ClientDataSet.
Um abraço
Welsey Y
Gostei + 0
08/03/2010
Carlos Faria
Gostei + 0
08/03/2010
Wesley Yamazack
Eu faço assim, no meu datamodule, eu declaro esta function publica, e na hora que clico no botão novo para incluir um registro eu faço o segundo codigo
Codigo 1
function TDM.Generator_ID(xNome: String): String;
Var
xQry : TSQLQuery;
begin
Try
xQry := TSQLQuery.Create(Self);
With xQry do
begin
SQLConnection := BDPRONTO;
SQL.Clear;
SQL.Add('SELECT GEN_ID(' + xNome + ',1) FROM rdb$database ');
Open;
Result := Fields[0].AsString;
end;
Finally
FreeAndNil(xQry);
End;
end;
Codigo 2
DSPadrao.DataSet.FieldByName('ID_BAIRRO').AsString:= DM.Generator_ID('GEN_BAIRRO');
Com este select, você gera pelo firebird, e ele lhe devolve o id gerado. Seria isso meu velho amigo ?
Um abraço
Wesley Y
Gostei + 0
08/03/2010
Carlos Faria
Gostei + 0
08/03/2010
Wesley Yamazack
Como você vai usar o generetor ? Vai ser invocado pelo delphi ? Se for no momento que você for gravar, mande gerar o ID, e cosneguira pegar, ao inves de deixar no clique do botão novo, e sim no botao gravar, acha que assim resolve seu problema ?
Um abraço
Wesley Y
Gostei + 0
08/03/2010
Carlos Faria
Gostei + 0
09/03/2010
Wesley Yamazack
Fico no aguardo da video então meu amigo.
Um abraço
Wesley Y
Gostei + 0
09/03/2010
Carlos Faria
[#VIDEO-184#]
Gostei + 0
10/03/2010
Wesley Yamazack
Um abraço
Wesley Y
Gostei + 0
11/03/2010
Wesley Yamazack
Fiz os testes aqui e funcionou, veja a procedure como é
CREATE PROCEDURE GRAVARCLIENTE (NOME VARCHAR(50))
RETURNS (Result INTEGER)
AS
DECLARE VARIABLE XID INTEGER;
BEGIN
SELECT GEN_ID(GEN_CLIENTE,1) FROM rdb$database INTO :XID;
INSERT INTO cliente (IDCLIENTE, NOME)
VALUES(:XID, :NOME);
Result = XID;
END
Fiz a mesma implementação que você e funcionou
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
SQLStoredProc1.Params[0].Value := Edit1.Text;
SQLStoredProc1.ExecProc;
ShowMessage( SQLStoredProc1.Params[1].Value );
end;
Um abraço
Wesley Y
Gostei + 0
16/03/2010
Carlos Faria
Gostei + 0
16/03/2010
Wesley Yamazack
Um abraço
Wesley Y
Gostei + 0
18/03/2010
Carlos Faria
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)