Я написал приведенную ниже хранимую процедуру для проверки дубликатов перед вставкой строки в таблицу.Вставьте инструкцию с CASE, чтобы избежать повторной вставки строки
Но я не могу написать свой оператор INSERT
внутри CASE
.
Как я могу написать хранимую процедуру для проверки значения @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, вам стоит подумать о добавлении другого SELECT сразу после 'INSERT', возвращая результат * успешной * вставки, чтобы сделать поведение хранимой процедуры более последовательным. Однако, если бы я был вами, я, вероятно, не вернул бы результат с помощью инструкции SELECT. Я могу использовать 'print 'File is Exists'' вместо' select' File уже Exists'' или просто 'RETURN 1' (или, возможно,' RETURN -1'). –