一个存储过程逻辑

来源:百度知道 编辑:UC知道 时间:2024/09/23 23:24:36
CREATE PROC P_Item
(
@p_id int,
@p_name varchar(30),
@p_startdate datetime,
@p_enddate datetime
)

AS

BEGIN

要执行的是这样一个判断

如果@p_id和p_name是存在的,那么就要判断对应的p_startdate和p_enddate,不能有重复
如:数据库中有4条记录
id name id start end
自动编号 messi 10 2008-08-08 2008-08-10
自动编号 jake 10 2008-04-08 2008-08-11
自动编号 loss 11 2008-05-06 2008-08-10
自动编号 messi 12 2008-08-08 2008-08-10

现在添加一条数据 messi 10 2008-08-08 2008-08-10就会报错,做了一部分,其他不知道怎么做了

IF NOT EXISTS (
SELECT [Name]
FROM T_Item
WHERE DepartmentID = @p_id
AND Name = @p_name)

INSERT INTO T_Item
(
...
)
VALUES
(
...
)

ELSE
BEGIN

END

我觉得你可以在里面定义一个变量进来,可以参考以下程序
CREATE PROC P_Item
@p_id int,
@p_name varchar(30),
@p_startdate datetime,
@p_enddate datetime

AS
declare idnum int --定行一行的索引位置,用来判断是否已存在了数据
set idnum = -1
select idnum = from T_Item where DepartmentID = @p_id and [Name] = @p_name
if idnum>0 --已有这个数据
begin
select idnum = from T_Item --进一步判断
where DepartmentID = @p_id
and Name = @p_name
and (加入其它两个条件)
if idnum>0 --已存在完全一样的数据
begin
--加入要处理的方法
end
else
begin
insert into T_Item(填入字段) values(填入值)
end
end
else
begin
insert into T_Item(填入字段) values(填入值)
end