marabunta
Goto Top

Oracle Insert Befehl

Hallo,

ich habe eine Datenbank, die etwa so aussieht:

PrimaryKey=ID

ID, STARTDATE, ENDDATE, ZA, TT, SP


Jetzt soll mit einem Insert Befehl folgendes passieren:
ID + 1
STARTDATE = JETZT
ENDDATE = JETZT + 1 MINUTE
Einen bestimmten Text in ZA eintragen = ('BLA')  
TT UND SP = TT UND SP von MAX(ID) WHERE ZA = 'ALB'  

Also habe ich angefangen, hier vermutlich falsch aber sinngemäß:
INSERT INTO TABELLE1 ( 
    ID, 
    STARTDATE, 
    ENDDATE, 
    ZA, 
    TT, 
    SP
)

VALUES(
    MAX(ID)+1,
    '20.02.18 00:00:00,000000000',   
    '20.02.18 00:01:00,000000000',   
    'BLA',   
    SELECT TT FROM TABELLE1 WHERE ZA = 'ALB' AND ROWNUM = '1' ORDER BY ID DESC,   
    SELECT SP FROM TABELLE1 WHERE ZA = 'ALB' AND ROWNUM = '1' ORDER BY ID DESC  
)

Vielen Dank für eure Hilfe.

Gruß
Marabunta

Content-Key: 365376

Url: https://administrator.de/contentid/365376

Printed on: April 20, 2024 at 11:04 o'clock

Member: em-pie
em-pie Feb 20, 2018 at 15:43:16 (UTC)
Goto Top
Moin,

ich suche gerade die Frage in deinem Post!?!

Gruß
em-pie
Member: Marabunta
Marabunta Feb 20, 2018 at 15:47:41 (UTC)
Goto Top
die frage ist, wie der Befehl nun wirklich aussehen muss, damit es wie beschrieben funktionieren würde
Member: SlainteMhath
SlainteMhath Feb 20, 2018 at 15:56:35 (UTC)
Goto Top
Moin,

bin kein Oracle Spezialist, trotzdem...

1.
Ist das eine Single User, single Thread Datenbank? Wenn nicht muss um das ganze eine Transaction 'rum, sonst klappt ID=MAX(ID)+1 nicht zu 100%

2.
VALUES(.... SELECT TT...) ist mE kein gültiger Syntax. Ich denke du brauchst das Oracle Äquivalent zu einer Stored Procedure in der du dann erst die Werte für TT und SP zusammenbastellst und dann als Variable in das INSERT INTO einfügst.


lg,
Slainte
Member: em-pie
Solution em-pie Feb 20, 2018 at 16:15:18 (UTC)
Goto Top
DU bist echt anstrengend....

was ist denn überhaupt dein Problem wo hakt es denn??

Grundsätzlich fällt mir als erstes mal auf, dass die EIngaben in Zeile 15 sowie 16 des dritten Code-Tags in Klammern stehen müssen!
 (SELECT TT FROM TABELLE1 WHERE ZA = 'ALB' AND ROWNUM = '1' ORDER BY ID DESC),   
 (SELECT SP FROM TABELLE1 WHERE ZA = 'ALB' AND ROWNUM = '1' ORDER BY ID DESC)  

Als nächstes wäre es sinnvll, wenn du mit einem Subselect arbeiten würdest:

...
VALUES (
(select
 ID_New
 , (select TO_CHAR (SYSDATE, 'MM-DD-YYYY HH24:MI:SS') FROM DUAL) as "NOW"  
 , (select to_date(to_char(SYSDATE, 'YYYY-DD-MM ') || ' ' || TO_CHAR(Timeadd(SYSDATE, , 00, 00, 01), 'HH24:MM:SS)))  
 , 'BLA'  
 , TT
 , SP
from
 (select 
   MAX(ID) + 1 as ID_NEW
   , TT
   , SP
  from TABELLE 1 Where  ZA = 'ALB' and ROWNUM = '1' order by ID desc)))  

So oder so ähnlich jedenfalls.... habe gerade kein ORACLE zur Hand....