2017-03-03 3 views
-1

My SQL-Anweisung schließen ist wie folgtWie wenn Fall in SQL

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[Bid_Create] 

    @BidNo nchar(12) 
    ,@BidType int 
    ,@ClientId int 
    ,@BidDate date 
    ,@EmailNotificationStatus int 
    ,@BidStatus int, 
    @BidAmount int 

AS 

DECLARE @highestBid int; 
BEGIN 
    Begin Try 
     Begin Transaction 

     SET NOCOUNT ON; 
     set @highestBid = (SELECT Max(wf_bid.BidAmount) as HighestBitAmount from wf_bid where wf_bid.ProductId = '1') 
     IF @[email protected] 
      UPDATE wf_bid SET [email protected] ,[email protected] ,[email protected] , [email protected],[email protected] 
      WHERE Id= (SELECT TOP 1 id 
      FROM [wf_bid] 
      WHERE BidAmount = (Select Max(BidAmount) FROM [wf_bid] WHERE ProductId=101 and ClientId=101)) 
       INSERT INTO wf_bid 
        (BidType,ClientId,BidDate,EmailNotificationStatus,BidStatus) 


       VALUES 
        (@BidType,@ClientId,@BidDate ,@EmailNotificationStatus ,@BidStatus) 
     Commit Transaction 
    End Try 
    Begin Catch 
     Rollback Transaction 
    End Catch 

END 

Mein Problem ist, dass, wenn Fall wird nach dem ersten update Aussage selbst geschlossen. Ich möchte, dass es geschlossen wird, nachdem nur die zweite Insert-Anweisung ausgeführt wurde. Welche Änderung muss ich in der Abfrage vornehmen, um dies zu ermöglichen?

+1

Verwenden 'BEGIN' und' END' – anon

+1

sollten Sie Ihren ELSE Teil innerhalb eines BEGIN END Paar (BEGIN in der Zeile vor der Aktualisierung, END umfassen, nach dem Einsatz) – nabuchodonossor

+1

@LovepreetSingh das ist über MySQL, nicht SQL Server. – TZHX

Antwort

1

So sollte die vollständige Nutzung sein:

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[Bid_Create] 

@BidNo nchar(12) 
,@BidType int 
,@ClientId int 
,@BidDate date 
,@EmailNotificationStatus int 
,@BidStatus int, 
@BidAmount int 

AS 

DECLARE @highestBid int; 
BEGIN 
Begin Try 
    Begin Transaction 

    SET NOCOUNT ON; 
    set @highestBid = (SELECT Max(wf_bid.BidAmount) as HighestBitAmount from wf_bid where wf_bid.ProductId = '1') 
    IF @[email protected] 
    BEGIN 
     UPDATE wf_bid SET [email protected] ,[email protected] ,[email protected] , [email protected],[email protected] 
     WHERE Id= (SELECT TOP 1 id 
     FROM [wf_bid] 
     WHERE BidAmount = (Select Max(BidAmount) FROM [wf_bid] WHERE ProductId=101 and ClientId=101)) 
      INSERT INTO wf_bid 
       (BidType,ClientId,BidDate,EmailNotificationStatus,BidStatus) 


      VALUES 
       (@BidType,@ClientId,@BidDate ,@EmailNotificationStatus ,@BidStatus) 
    END 
    Commit Transaction 
End Try 
Begin Catch 
    Rollback Transaction 
End Catch 

END