如何使输入检查进入存储过程

时间:2019-05-20 15:17:22

标签: sql-server stored-procedures

我正忙着为学校做作业。现在,我需要对存储过程进行输入检查。我的存储过程插入到桌子中进行清洁。但是我需要检查程序中是否存在工作人员ID。

我已经尝试使用if语句,但是我不确定这是否满足我的需求。

没有if语句

create procedure spVoegSchoonmaakToe
(
@actie varchar(255),
@kamerid int,
@medewerkerid int
)
As
begin
Declare @schoonmaakid int
select @schoonmaakid = max(schoonmaakid) + 1
from schoonmaak
declare @begin_schoonmaak date = getdate()
declare @eind_schoonmaak date = getdate()

insert into schoonmaak values (@schoonmaakid, @begin_schoonmaak, @eind_schoonmaak, @actie, @kamerid, @medewerkerid)
END
GO

带有if语句

create procedure spVoegSchoonmaakToe
(
@actie varchar(255),
@kamerid int,
@medewerkerid int
)
As
if exists (select count(*) from medewerker m where medewerkerid > 21)
if exists (select count(*) from kamer k where kamerid > 15 )
begin
Declare @schoonmaakid int
select @schoonmaakid = max(schoonmaakid) + 1
from schoonmaak
declare @begin_schoonmaak date = getdate()
declare @eind_schoonmaak date = getdate()

insert into schoonmaak values (@schoonmaakid, @begin_schoonmaak, @eind_schoonmaak, @actie, @kamerid, @medewerkerid)
END
GO

使用不同的if语句:

create procedure spVoegSchoonmaakToe
(
@actie varchar(255),
@kamerid int,
@medewerkerid int
)
As
begin
if (select count(*) from medewerker m where medewerkerid > @medewerkerid) > 0
Begin
raiserror ('Deze medewerker bestaat niet',16,1)
return
end
if (select count(*) from kamer k where kamerid > @kamerid ) > 0
Begin
raiserror ('Deze kamer bestaat niet',16,1)
end
Declare @schoonmaakid int
select @schoonmaakid = max(schoonmaakid) + 1
from schoonmaak
declare @begin_schoonmaak date = getdate()
declare @eind_schoonmaak date = getdate()

insert into schoonmaak values (@schoonmaakid, @begin_schoonmaak, @eind_schoonmaak, @actie, @kamerid, @medewerkerid)
END
GO

现在执行以下if语句之一,以查看工作人员是否存在并且房间确实存在。 (有15个房间和21个工作人员)。

0 个答案:

没有答案