AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird CTE in Update oder Merge Statements
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird CTE in Update oder Merge Statements

Ein Thema von lxo · begonnen am 7. Apr 2020 · letzter Beitrag vom 7. Apr 2020
Antwort Antwort
lxo

Registriert seit: 30. Nov 2017
288 Beiträge
 
Delphi 12 Athens
 
#1

Firebird CTE in Update oder Merge Statements

  Alt 7. Apr 2020, 18:16
Datenbank: Firebird • Version: 3.0.5 • Zugriff über: IBExpert
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
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#2

AW: Firebird CTE in Update oder Merge Statements

  Alt 7. Apr 2020, 18:29
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
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
288 Beiträge
 
Delphi 12 Athens
 
#3

AW: Firebird CTE in Update oder Merge Statements

  Alt 7. Apr 2020, 18:35
Ich sehe da leider keine Abweichung, wie sollte das denn stattdessen aussehen ?
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
288 Beiträge
 
Delphi 12 Athens
 
#4

AW: Firebird CTE in Update oder Merge Statements

  Alt 7. Apr 2020, 19:04
Aaaaaah jetzt hab ich es verstanden, danke .

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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:25 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