2016-04-18 12 views
0

Ich bin neu in SQL. Ich habe eine Prozedur geschrieben, um Daten in db zu speichern. Und von SQL versuche ich, diese Prozedur aufzurufen, um Daten zu speichern. Aber SQL-Fehler erhalten>ORA-00900: invalid SQL statement. Kann mir bitte jemand mit diesem Fehler helfen? Hier ist mein Versuch:Fehler in Orakel einfügen Anweisung

Mein Verfahren >>>

PROCEDURE NEW_USER 
(
    IN_CREATED_BY    IN VARCHAR2, 
    IN_MODIFIED_BY       IN VARCHAR2, 
    IN_USERNAME       IN VARCHAR2 
) 
AS 
    L_USER_ID INTEGER; 
    N_USER_ID INTEGER := hibernate_sequence.NEXTVAL; 
BEGIN 
    SELECT case 
     when exists(SELECT USER_ID FROM T_MT_USER WHERE USERNAME = IN_USERNAME) 
     then 
       (SELECT USER_ID FROM T_MT_USER WHERE USERNAME = IN_USERNAME) 
     else 0 
     end into L_USER_ID 
     FROM dual; 

    IF (L_USER_ID = 0) THEN 
    INSERT INTO T_MT_USER 
    (USER_ID, ACCOUNT_EXPIRED_FLG, ACCOUNT_LOCKED_FLG, created_by, CREATED_TS, ACTIVE_FLG, end_effective_dt, modified_by, MODIFIED_TS, "password", password_expired, start_effective_dt, username) 
    VALUES 
    (N_USER_ID, 0, 0, IN_CREATED_BY, SYSTIMESTAMP, 1, NULL, IN_MODIFIED_BY, SYSTIMESTAMP, '$2a$10$3hoAeeVJ0AG.CQS2xX8rT.wUlt1rjoiYsHW0YflZEiQ5QYzG4HpYi', 0, SYSTIMESTAMP, IN_USERNAME); 
    END IF; 
EXCEPTION 
    WHEN OTHERS THEN 
     log_api.fatal(log_ctx,'Exception in NEW_USER'); 
     RAISE; 
END NEW_USER; 

Und mein Ruf in SQL >>

USER_DEMO.NEW_USER('sbappi','sbappi','sumon5'); 
+0

Was gibt Ihnen hibernate_sequence.NEXTVAL oder was ist das? Ist es eine Oracle-Sequenz? Oder das gleiche Hibernate-Personal? –

+0

dies ist für id. Es erhält die ID für die Zeile –

+1

Welches Werkzeug verwenden Sie, um die Prozedur aufzurufen? 'sqlplus' benötigt ein' execute', um eine gespeicherte Prozedur auszuführen: 'execute USER_DEMO.NEW_USER ('sbappi', 'sbappi', 'sumon5');' –

Antwort

0

Wie a_horse_with_no_name oben Kommentar vorgeschlagen folgende Code funktioniert gut für mich >>>

execute USER_DEMO.NEW_USER('sbappi','sbappi','sumon5');