如何在hana SQL查询中进行IF EXISTS

时间:2017-05-16 16:31:40

标签: sql hana

我有这个查询代码:

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检查,因为我无法在网上找到任何答案。

3 个答案:

答案 0 :(得分:2)

如果EXISTS是HANA不支持的非标准语法。 作为替代方法,您可以查询目录并在SQLScript中编写IF...THEN语句。

答案 1 :(得分:0)

使用 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')

答案 2 :(得分:0)

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;