Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LilianFreitas123

Stored Procedure

Recommended Posts

Boa tarde galera,

 

Estou com uma dúvida. Tenho uma stored procedure que fazer um save de dados de um formulário.

A stored procedure é essa:

USE [siga_enterSistemasDesenvolvimento]
GO
/****** Object:  StoredProcedure [dbo].[SaveDefinicaoFuncional4]    Script Date: 19/08/2014 11:14:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[SaveDefinicaoFuncional4]
	@pkDefinicaoFuncional4 int = null
	,@fkNumeroReferenciaOportunidade int = null
	,@fkUsuario int = null
	,@dataInclusao datetime = null
	,@valorVenda numeric = null
	,@valorPD numeric = null
	,@valorMateriais numeric = null
	,@valorConsumo numeric = null
	,@valorInstalacao numeric = null
	,@valorMaodeobra numeric = null
	,@valorInfraestrutura numeric = null
	,@valorSupervisao numeric = null
	,@prazo nvarchar(max) = null
	,@informacao nvarchar(4000) = null
as
set nocount on

if not exists(select * from definicaoFuncional4 where
	(@pkDefinicaoFuncional4 is null or pkDefinicaoFuncional4 = @pkDefinicaoFuncional4)
	and (@fkNumeroReferenciaOportunidade is null or fkNumeroReferenciaOportunidade = @fkNumeroReferenciaOportunidade)
)
begin
	insert definicaoFuncional4(fkNumeroReferenciaOportunidade, fkUsuario, dataInclusao) values(@fkNumeroReferenciaOportunidade, @fkUsuario, GETDATE())
	set @pkDefinicaoFuncional4 = @@identity
end

update DefinicaoFuncional4 set
	valorVenda = case when @valorVenda is null then valorVenda else @valorVenda end
	,valorPD = case when @valorPD is null then valorPD else @valorPD end
	,valorMateriais = case when @valorMateriais is null then valorMateriais else @valorMateriais end
	,valorConsumo = case when @valorConsumo is null then valorConsumo else @valorConsumo end
	,valorInstalacao = case when @valorInstalacao is null then valorInstalacao else @valorInstalacao end
	,valorMaodeobra = case when @valorMaodeobra is null then valorMaodeobra else @valorMaodeobra end
	,valorInfraestrutura = case when @valorInfraestrutura is null then valorInfraestrutura else @valorInfraestrutura end
	,valorSupervisao = case when @valorSupervisao is null then valorSupervisao else @valorSupervisao end
	,prazo = case when @prazo is null then prazo else @prazo end
	,informacao = case when @informacao is null then informacao else @informacao end
where
	(@pkDefinicaoFuncional4 is null or pkDefinicaoFuncional4 = @pkDefinicaoFuncional4)
	and (@fkNumeroReferenciaOportunidade is null or fkNumeroReferenciaOportunidade = @fkNumeroReferenciaOportunidade)

return @pkDefinicaoFuncional4

A ideia do sistema é que insira um novo registro e se houver alteração crie uma nova versão, ou seja, um novo registro na tabela. Como eu poderia fazer isso?

 

Agradeço desde já.


Resolvido :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lilian, só uma dica.

Qdo vc faz um if exists, ao invés de colocar select *, coloque select 1, pois assim ele nao precisa ler toda a tabela para encontrar um determinado valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.