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.


Rogeriorock

Rogeriorock

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.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar