Cita:
Empezado por pepon386
Prueba a hacerlo de la siguiente manera (no lo he probado, así que a lo mejor hay algún error de sintaxis):
Código SQL [-]
CREATE procedure spActHist (@docidentidad varchar(30),
@fechaincon datetime,
@fechafincon datetime,
@idtipocontrato int, @idtipovincu int),
@EXISTE int AS
select Count(*) as @EXISTE
from Historico
where [docidentidad]=@docidentidad
if (@Existe = 0) then
begin
insert into [Historico]
([docidentidad], [fechaincon], [fechafincon], [idtipocontrato], [idtipovincu])
values
(@docidentidad, @fechaincon, @fechafincon, @idtipocontrato, @idtipovincu)
end
|
¿Es válido "
select Count(*) as @EXISTE"?
Igualmente no recomiendo hacer un Count para saber si hay como mínimo un registro, simplemente porque el count se ejecuta completo, si la tabla es algo grande, imagínesen!
Viendo nuevamente la pregunta de
kejos, puedo
suponer, que exita una UK o PK compuesta en la tabla históricos, y supongo nuevamente que comete el error en el exists solo filtrando por uno de los campos:
Código SQL
[-]
CREATE procedure spActHist (@docidentidad varchar(30),
@fechaincon datetime,
@fechafincon datetime,
@idtipocontrato int, @idtipovincu int) AS
if not exists (select 1
from Historico
where [docidentidad]=@docidentidad
and [idtipocontrato] = @idtipocontrato
and [idtipovincu] = @idtipovincu)
insert into [Historico]
([docidentidad], [fechaincon], [fechafincon], [idtipocontrato], [idtipovincu])
values
(@docidentidad, @fechaincon, @fechafincon, @idtipocontrato, @idtipovincu)
Kejos sería bueno que des alguna señal!