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

Ausgedruckt am: 19.03.2024 um 01:03 Uhr

Mitglied: em-pie
em-pie 20.02.2018 um 16:43:16 Uhr
Goto Top
Moin,

ich suche gerade die Frage in deinem Post!?!

Gruß
em-pie
Mitglied: Marabunta
Marabunta 20.02.2018 um 16:47:41 Uhr
Goto Top
die frage ist, wie der Befehl nun wirklich aussehen muss, damit es wie beschrieben funktionieren würde
Mitglied: SlainteMhath
SlainteMhath 20.02.2018 um 16:56:35 Uhr
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
Mitglied: em-pie
Lösung em-pie 20.02.2018 um 17:15:18 Uhr
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....