簡體   English   中英

如何在hana SQL查詢中執行IF EXISTS

[英]How to do an IF EXISTS in hana SQL query

我有這個查詢代碼:

IF EXISTS  ( 

SELECT 

 *

 FROM sys.objects

 WHERE object_id =
 OBJECT_ID(N'[dbo].[BAL_WMS_STAGING]') 

 AND type in (N'U')

)

 DROP TABLE
 [dbo].[BAL_WMS_STAGING] 

GO 
 CREATE TABLE

我正在嘗試使用此語句來查詢 SAP Hana 數據庫。 開始查詢IF EXISTS一直報錯,我假設這意味着這個關鍵字在Hana SQL語法中不存在。 有誰知道如何在 Hana 中進行IF EXISTS檢查,因為我無法在網上找到任何答案。

如果 EXISTS 是 HANA 不支持的非標准語法。 作為替代方案,您可以查詢目錄並在 SQLScript 中編寫IF...THEN語句。

使用 IF EXISTS 的替代方法可能是這樣的:

SELECT *
FROM sys.objects
WHERE object_id = (
    CASE
    WHEN EXISTS (
        SELECT object_id
        FROM sys.objects
        WHERE object_id = OBJECT_ID(N'[dbo].[BAL_WMS_STAGING]')
        AND type IN (N'U'))
    THEN (
        SELECT object_id
        FROM sys.objects
        WHERE object_id = OBJECT_ID(N'[dbo].[BAL_WMS_STAGING]')
        AND type IN (N'U'))
    ELSE
        NULL
    END
)
AND type IN (N'U')

SQLScript 沒有 IF EXIST 條件。 但是可以通過創建一個由您的第一個查詢初始化的變量(標志)來實現相同的邏輯。 您不需要選擇所有列。 您可以選擇 object_id 作為示例。

flag = '';

SELECT object_id INTO flag FROM sys.objects
 WHERE object_id =
 OBJECT_ID(N'[dbo].[BAL_WMS_STAGING]') 
 AND type in (N'U');

IF flag != '' THEN
  DROP TABLE [dbo].[BAL_WMS_STAGING]
END IF;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM