0

我有兩個表Table1Table2如果存在行然後刪除else使用SQL Server 2014中的SQL Server存儲過程插入表

現在我想寫一個存儲過程,如果記錄存在,它將刪除該記錄,如果該記錄不存在,則會插入該記錄。

注:表中沒有任何主鍵。我可能需要根據多列創建密鑰。

USE lan_db; 
GO 

CREATE PROCEDURE dbo.udm_to_app_invoice 
AS 
    SET NOCOUNT ON; 

    INSERT INTO dbo.dummy3 
     SELECT 
      poc_name, 
      poc_code, 
      salesrep_code, 
      invoice_date, 
      product_name 
     FROM 
      [dbo].[src_nota_fiscal] 
     WHERE 
      LAST_UPDT = (SELECT MAX(last_updt) FROM DBO.SRC_NOTA_FISCAL); 
GO 

回答

1

研究T-SQL IF...ELSE,這可能是最簡單的。

IF邏輯表達式
{sql_statement | statement_block}
[ELSE
{sql_statement | statement_block}]

布爾表達式可以是子查詢,您可以在其中使用EXISTS運算符。

指定一個子查詢來測試是否存在行。

你的問題,在僞SQL答案:

IF EXISTS(<SELECT statement that selects the record>) 
    <DELETE statement> 
ELSE 
    <INSERT statement> 

另一種方法是使用MERGE聲明。然而,這是一個繁瑣的陳述,國際海事組織並不那麼直觀。

相關問題