如果存储过程中不存在记录,则插入记录



我正在创建一个存储过程,如果记录尚未插入,则需要执行插入操作。

此存储过程可由用户多次运行。我正在使用SQL Server 2008

我的查询如下。它不给出任何错误,但也不做任何事情。如果我删除如果不存在,只是做一个简单的插入与选择,它的第一次工作,然后给出一个错误,因为记录已经存在。

CREATE PROCEDURE LoadRecords
   @ADD_BY varchar(10)
  ,@YEAR varchar(4)
  ,@Inserted int OUTPUT
AS
BEGIN
DECLARE @OFF char(2)
DECLARE @Year char(4)
DECLARE @ID varchar(9)
set @Inserted =0
/*check if record exists or not */
IF NOT EXISTS(
Select F.OFF, (@YEAR ), F.ID, F.Form, @ADD_BY
from Table1 as F
Left Join Table2  R
ON F.ID = R.ID
and F.OFF = R.OFF
and F.Year = R.Year
where F.Year = (@Year -1 )
and @OFF= F.OFF
and @Year = F.Year
and @ID= F.ID
and @Form = F.Form
)
/*insert values if records do not exist */
INSERT INTO Table1 (
    OFF, YEAR, ID, Form ,ADD_BY)
Values(@OFF, @Year, @ID , @Form, @ADD_BY)   

SET @Inserted =@@ROWCOUNT
END
GO

我认为你在IF NOT EXISTS上添加的条件有问题,特别是这些条件是相反的:

where F.Year = (@Year -1 )
and @Year = F.Year

最新更新