Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird CTE in Update oder Merge Statements (https://www.delphipraxis.net/203927-firebird-cte-update-oder-merge-statements.html)

lxo 7. Apr 2020 17:16

Datenbank: Firebird • Version: 3.0.5 • Zugriff über: IBExpert

Firebird CTE in Update oder Merge Statements
 
Hallo,

Ich habe folgendes Problem.

Code:
with TEST
as (select * from ARTIKEL)
-- select * from test
merge into ARTIKEL A
using TEST T on T.ARTIKELID = A.ARTIKELID
when matched then
 update set A.DATUMNEU = current_timestamp

Der auskommentierte Select würde ohne Probleme funktionieren.
Jedoch das Merge Into funktioniert nicht.

Übersehe ich da was oder funktioniert das einfach nicht?


Fehlermeldung:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 5, column 1.
merge.


Laut "firebirdsql.org" sollten CTEs auch für Update und Merge-Statements funktionieren.
Zitat:

Ein in Klammern eingeschlossenes CTE-Konstrukt kann als Unterabfrage in SELECT-Statements verwendet werden, aber auch in UPDATEs, MERGEs etc.
https://firebirdsql.org/file/documen...-select-cte-de



** ich nutze Firebird 3.0.5.33220 und IBExpert 2020.2.12.1

Delphi.Narium 7. Apr 2020 17:29

AW: Firebird CTE in Update oder Merge Statements
 
Die von Dir genutzte Syntax weicht irgendwie von dem, was in der Doku steht ab.

MERGE Verwendet für: Daten aus einer Quellenmenge in eine Zielbeziehung zusammenführen

lxo 7. Apr 2020 17:35

AW: Firebird CTE in Update oder Merge Statements
 
Ich sehe da leider keine Abweichung, wie sollte das denn stattdessen aussehen ?

lxo 7. Apr 2020 18:04

AW: Firebird CTE in Update oder Merge Statements
 
Aaaaaah jetzt hab ich es verstanden, danke :-D.

So funktioniert es.


Code:
merge into ARTIKEL A
using (with TEST
       as (select *
           from ARTIKEL)
       select *
       from TEST) T
on T.ARTIKELID = A.ARTIKELID
when matched then
    update set A.DATUMNEU = current_timestamp


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz