我已经编写了下面的存储过程,用于在将行插入表之前检查重复项。用CASE插入语句以避免重复行插入
但是我不能在CASE
里面写下我的INSERT
声明。
我该如何编写存储过程来检查@Ordername
的值,之后如果它不存在,那么它应该插入到数据库中。
CREATE PROCEDURE [Test Procedure ]
(
@section varchar(70),
@mark varchar(70),
@qty decimal(18,2),
@Weight decimal(18,2),
@dateupdateremark int,
@OrderName varchar(70)
)
AS
BEGIN
SET NOCOUNT ON;
select case(@OrderName)
when (select OrderName from dbo.tbl_insertxmldetails
where(@OrderName) not in (select OrderName from tbl_insertxmldetails))
then
insert into dbo.tbl_insertxmldetails
(Section, Mark, QTY,Weight,Dateupdateremark ,OrderName,SystemDate)
values
(@Section, @Mark, @QTY,@Weight, @Dateupdateremark,@OrderName,GETDATE())
else 'File already Exists'
end
你'else'文件已经存在''位在这种情况下没有意义。 –
是的,你是正确的选择'文件已存在'的陈述应该使用... – Asif
嗯,是的,至少编译。尽管如果你选择用SELECT语句返回结果,你应该考虑在INSERT之后加入另一个SELECT,返回* successful *插入的结果,以使存储过程的行为更加一致。但是,如果我是你,我可能不会用'SELECT'语句返回结果。我可以使用'print'文件已经存在''而不是'select'文件已经存在''或简单地''返回1''(或者可能''返回-1'')。 –