我有这个查询代码:
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
检查,因为我无法在网上找到任何答案。
答案 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;