我已經編寫了下面的存儲過程,用於在將行插入表之前檢查重複項。用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'')。 –