Поддерживает ли SQLScript для SAP HANA использование INSERT с CTE (общие табличные выражения)?

Я знаю, что это не конкретный фрагмент кода или проблема, но у меня возникли проблемы с проблемой, очень похожей на вопрос человека, задавшего это (за исключением того, что это проблема для SQL Server): Объединение INSERT INTO и WITH / CTE ... и я не могу найти его ни на каких справочных форумах SAP HANA и т. д. Я подумал, что здесь может быть эксперт, который может просто дать мне простой ответ «да» или «нет».

Оператор SQL, который я использую, содержит несколько CTE, но когда я пытаюсь вставить, он сообщает мне о синтаксической ошибке вокруг слова INSERT. Он определенно изложен точно так же, как в вопросе, который я связал выше (потратил часы на проверку), и я могу опубликовать образцы кода, если необходимо, но я просто хочу сначала узнать, поддерживается ли он! Спасибо


person jackelsey    schedule 12.02.2018    source источник


Ответы (3)


Краткий ответ: нет, CTE не поддерживаются для операторов INSERT / UPDATE.

Более длинный ответ: команды SQLScript INSERT / UPDATE на самом деле являются «заимствованными» командами SQL как поясняется в документации.

Проверяя документацию для SQL INSERT, мы обнаруживаем, что он поддерживает подзапрос как источник значений.

Термин подзапроса определяется как часть оператора SQL SELECT. Проверка person Lars Br.    schedule 12.02.2018


Вы можете преобразовать CTE в оператор Sub-Select во многих случаях.

Вы можете использовать следующие

insert into city (city, countryid, citycode)
select
    city, countryid, citycode
from (
    -- CTE Expression as subselect
    select * from city
    -- end (CTE)
) cte

Вместо использования следующей допустимой команды CTE в сочетании с INSERT (на SQL Server)

with cte as (
    select * from city
)
insert into city (city, countryid, citycode)
select
    city, countryid, citycode
from cte
person Eralper    schedule 13.02.2018
comment
Привет. Спасибо за Ваш ответ. Я знаю, что вы можете их преобразовать, и обычно это делается для одного или двух CTE - я просто очень надеялся, что этого не произойдет, поскольку у меня было около 15, которые все ссылаются друг на друга, и похоже, что это может стать довольно беспорядочным. Я использую представление вычислений, а не статическую таблицу и инструкции INSERT, чтобы преодолеть это на данный момент - person jackelsey; 19.02.2018

SAP HANA включает эту возможность, порядок кода отличается от SQL Server:

INSERT INTO EXAMPLE (ID)
 WITH cte1 AS (SELECT 1 AS ID FROM DUMMY)
 SELECT ID FROM cte1;
person user12360869    schedule 12.11.2019