Capiturar Parametro OutPut de estorede procedure
30/11/2005
0
Oi pessoal ainda estou brigando com o SqlServer,e as stored procedures dele.Bem eu quero pegar o retorno de um parametro output em um trigger, a procedure esta pronta e no query analyzer me da o retorno que eu quero.Mas no triger não consigo usar este resultado a ideia e quando for inserido o registro esta procedure dispare e gravar o resultado em um campo.Ai vai o esboço do codigo.
Create TRIGGER NomedoTrigger
ON proprietario.tabela
FOR INSERT, UPDATE
AS
DECLARE @MAT FLOAT,FLAG CHAR(1),@SE VARCHAR(5)
SELECT @MAT = MAT,@FLAG = FLAG FROM INSERTED
IF (SELECT COUNT(MAT) FROM INSERTED WHERE MATRICULA IS NOT NULL)>0
BEGIN
Execute dbo.ProcedureQueQueroExecutar @ParametroOutPut=@se output
update proprietario.tabela set se=@se,flag=´0´ where mat=@MAT
RETURN
END
Se alguem puder me ajudar para que eu possa acabar logo com isto e voltar pro meu velho e bom Oracle eu agradeço.
Create TRIGGER NomedoTrigger
ON proprietario.tabela
FOR INSERT, UPDATE
AS
DECLARE @MAT FLOAT,FLAG CHAR(1),@SE VARCHAR(5)
SELECT @MAT = MAT,@FLAG = FLAG FROM INSERTED
IF (SELECT COUNT(MAT) FROM INSERTED WHERE MATRICULA IS NOT NULL)>0
BEGIN
Execute dbo.ProcedureQueQueroExecutar @ParametroOutPut=@se output
update proprietario.tabela set se=@se,flag=´0´ where mat=@MAT
RETURN
END
Se alguem puder me ajudar para que eu possa acabar logo com isto e voltar pro meu velho e bom Oracle eu agradeço.
Rogeriorock
Curtir tópico
+ 0
Responder
Posts
30/11/2005
Rogeriorock
Bem vou dar mas algumas informações,eu quero fazer o mudança no registro que esta sendo inserido,acho que e por isto que ele não faz já que a matricula da tabela inserted ainda não existe.Mas acredito que deva ter uma maneira de fazer isto,e que ainda não achei nada como no oracle que divide os triggers em tabela,linha e antes e depois de cada operação o sql server.
Responder
07/12/2005
Viniciusnunes
Amigo.. espero que isso te ajude ..
É bem simple estou te mando um exemplo de trigger e procedure
Obs : Crie uma tabela chamada usuario com 3 campos Cod, nome e Dtlimite.
depois insira 2 registros com a data de 2005-11-01 e por ultimo insira um registro com a data de 2005-12-30 ai vc podera ver que a data limite dos dois primeiros foram tualizadas para a data atual.
===================================
Procedure de teste
CREATE PROCEDURE dbo.teste (@Data datetime output)
AS
declare @SQL nvarchar(400)
begin
set @SQL = N´select @Data = getdate() ´
exec sp_executesql @SQL, N´@Data datetime output´, @Data output
end
=====================================
Trigger
CREATE TRIGGER [Teste_Trigger] ON [dbo].[Usuario]
FOR INSERT, UPDATE, DELETE
AS
declare @Data datetime
if (select Count(*) from dbo.Usuario where dtlimite < getdate() ) > 0
begin
--Procedure que retorna parametro
exec dbo.teste @Data output
update dbo.usuario set dtlimite = @Data where dtlimite < getdate()
end
Att.
É bem simple estou te mando um exemplo de trigger e procedure
Obs : Crie uma tabela chamada usuario com 3 campos Cod, nome e Dtlimite.
depois insira 2 registros com a data de 2005-11-01 e por ultimo insira um registro com a data de 2005-12-30 ai vc podera ver que a data limite dos dois primeiros foram tualizadas para a data atual.
===================================
Procedure de teste
CREATE PROCEDURE dbo.teste (@Data datetime output)
AS
declare @SQL nvarchar(400)
begin
set @SQL = N´select @Data = getdate() ´
exec sp_executesql @SQL, N´@Data datetime output´, @Data output
end
=====================================
Trigger
CREATE TRIGGER [Teste_Trigger] ON [dbo].[Usuario]
FOR INSERT, UPDATE, DELETE
AS
declare @Data datetime
if (select Count(*) from dbo.Usuario where dtlimite < getdate() ) > 0
begin
--Procedure que retorna parametro
exec dbo.teste @Data output
update dbo.usuario set dtlimite = @Data where dtlimite < getdate()
end
Att.
Responder
Clique aqui para fazer login e interagir na Comunidade :)