0

行をテーブルに挿入する前に、重複をチェックするための以下のストアド プロシージャを作成しました。

しかし、私は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
4

2 に答える 2

2

問題を解決する case ステートメントの代わりに If not exists 句を使用します

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;


      if not exists (select OrderName from dbo.tbl_insertxmldetails 
       where(@OrderName) not in (select OrderName from tbl_insertxmldetails))

      Begin

         insert into dbo.tbl_insertxmldetails 
         (Section, Mark, QTY,Weight,Dateupdateremark ,OrderName,SystemDate)
         values
         (@Section, @Mark, @QTY,@Weight, @Dateupdateremark,@OrderName,GETDATE())

      End

       else
           Select 'File already Exists'
于 2012-06-12T04:24:51.977 に答える
1

使用する必要はありませんNOT IN、あなたはそれをこのように行うことができます

 IF NOT EXISTS(select OrderName from dbo.tbl_insertxmldetails Where OrderName=@OrderName)
 BEGIN

   insert into dbo.tbl_insertxmldetails 
   (Section, Mark, QTY,Weight,Dateupdateremark ,OrderName,SystemDate)
   values
   (@Section, @Mark, @QTY,@Weight, @Dateupdateremark,@OrderName,GETDATE())
END
   ELSE
     'File already Exists'
于 2012-06-12T04:36:15.480 に答える