2016-04-12 9 views
0

Zuerst wird die Tabelle I in einfügen bin versucht diese Tabelle:ORA-01722: ungültige Nummer mit to_char Zeitstempel

CREATE TABLE Message 
(
    MessageID varchar2(80) NOT NULL, 
    Message varchar2(500), 
    SendDate date NOT NULL,  
    SendID varchar2(50) NOT NULL, 
    Request_ID varchar2(50) NOT NULL, 
    PRIMARY KEY (MessageID) 
); 

und meine INSERT-Abfrage ist dies (Spring, Mybatis):

INSERT INTO message (
     messageid 
    , message 
    , senddate 
    , sendId 
    , request_Id 
)VALUES(
     #{sendidjbuser} + TO_CHAR(systimestamp, 'yyyymmddhh24missff3') 
    , #{message} 
    , sysdate 
    , #{sendidjbuser} 
    , #{requestIdjbuser} 
) 

ich habe versucht, dies auf cmd und dieser Teil der obigen Abfrage war das Problem:

INSERT INTO message (messageId) VALUES('sendId' + TO_CHAR(systimestamp, 'yyyymmddmissff3')) 

ich bin auf Oracle 11. ich Einsetzen gerade versucht nur TO_CHA R (systimestamp, 'yyyymmddmissff3'), ohne das zu einer Zeichenkette hinzuzufügen, und es hat funktioniert. Aber ich brauche diesen Teil, um zu arbeiten. Gibt es einen richtigen Weg, das zu tun?

+4

Sie concat falsch, verwenden Sie '||' – MrSimpleMind

+1

[Concatenation-Operator] (http://docs.oracle.com/cd/E11882_01/Server.112/e41084/Operators003.htm) in den Dokumenten. –

Antwort

1

In Oracle verwenden Sie bitte || oder die Funktion CONCAT() zum Verketten von Strings. Sie verwenden '+' und erhalten somit den Fehler.

+0

oh Gott, was ist los mit mir .. Jedenfalls danke. Seufzer.. – SunSun