Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   [erledigt] Wie verwendet man VEXTVAL und CURRVAL richtig (https://www.delphipraxis.net/169058-%5Berledigt%5D-wie-verwendet-man-vextval-und-currval-richtig.html)

p80286 26. Jun 2012 15:47

Datenbank: Oracle • Version: 10 • Zugriff über: egal

[erledigt] Wie verwendet man VEXTVAL und CURRVAL richtig
 
Hallo zusammen,
folgende Abfrage wir von Oracle nicht akzeptiert:
Code:
select '-- HUSC'
     ,'insert into globalmask (globalmaskkey,countrykey,ipsitekey,usetype,casetypekey,propertytypekey)'
     ,'values('||nextkey.nextval||','||countrykey||',20230628,4,1,1);'
,chr(13)||chr(10)
     ,'insert defaultcasenamenamekey (GLOBALMASKKEY,NAMETYPEKEY,NAMEKEY,DEFAULTKEY)'
     ,' values ('||nextkey.currval||',102,10414425);'
,chr(13)||chr(10)||'-- HUHR'
  ,'insert into globalmask (globalmaskkey,countrykey,ipsitekey,usetype,casetypekey,propertytypekey)'
  ,'values('||nextkey.nextval||','||countrykey||',37934789,4,1,1);'
,chr(13)||chr(10)
  ,'insert defaultcasenamenamekey (GLOBALMASKKEY,NAMETYPEKEY,NAMEKEY,DEFAULTKEY)'
  ,' values ('||nextkey.currval||',102,35745741);'
,chr(13)||chr(10)||'-- HUBW'
  ,'insert into globalmask (globalmaskkey,countrykey,ipsitekey,usetype,casetypekey,propertytypekey)'
  ,'values('||nextkey.nextval||','||countrykey||',37934829,4,1,1);'
,chr(13)||chr(10)
  ,'insert defaultcasenamenamekey (GLOBALMASKKEY,NAMETYPEKEY,NAMEKEY,DEFAULTKEY)'
  ,' values ('||nextkey.currval||',102,38076588);' ---<< Fehler
from tablecountry
where countrycode<>'WO'
order by countrykey
Die Fehlermeldung lautet: ORA-02287: sequence number not allowed here.
(Das Currval ggf nicht den Wert liefert den ich erwarte ist mir klar.Mir geht's nur um die Fehlermeldung)

Wißt ihr woran Oracle sich verschluckt?

Gruß
K-H

Jumpy 26. Jun 2012 16:03

AW: Wie verwendet man VEXTVAL und CURRVAL richtig
 
Leider keine Ahnung. Vllt. ist der Sequenzer empfindlich? Oder kann in einem Select nur einmal angesprochen werden?
Kann man die entsprechenden Stellen vllt. ersetzen durch einen Subselect ala:

(Select nextkey.nextval from Dual)

p80286 26. Jun 2012 16:09

AW: Wie verwendet man VEXTVAL und CURRVAL richtig
 
Lt. Oracle Beschreibung tritt der Fehler in Subselects, Where.., Order.. usw. auf, aber eben nicht im Select. Das mit dem Mehrfachaufruf könnte sein wäre aber nicht so positiv.
(und vor allem nicht dokumentiert, bzw. ich hätte es übersehen)

Gruß
K-H

Ohh
ich hatte das Order By Übersehen *schäm*
hat sich erledigt

Nachtrag:
Es sieht so aus als ob NEXTVAL pro SELECT nur einen Wert liefert. Das CURRVAL wäre also Überflüssig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 Uhr.

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