2017-02-07 29 views
0

我試圖在將它插入表格後顯示記錄。但是我的主鍵是一個序列的子字符串,所以我不能找到一種方法來保存這個值......這是我的代碼pl/sql oracle如何檢查或如何存儲一個序列的當前值

SET SERVEROUTPUT ON 


ACCEPT MARQUE PROMPT "Entrez la marque de la moto " 
ACCEPT ANNEE PROMPT "Entrez l annee de la moto: " 
ACCEPT PRIX PROMPT "Entrez le prix de la moto: " 

DECLARE 


myMarque VARCHAR2(50):='&MARQUE'; 
myAnnee VARCHAR2(6):='&ANNEE'; 
myPrix NUMBER(6,2):=&PRIX; 
lecode VARCHAR2(12); 

BEGIN 

    IF myAnnee = 2013 THEN 

     INSERT INTO MOTO (CODE, MARQUE, ANNEE, PRIX) VALUES (UPPER(SUBSTR(myMarque, 1,3)||MASEQ.nextval), myMarque, myAnnee, myPrix); 
     COMMIT; 

    ELSIF myAnnee = 2014 THEN 

     INSERT INTO MOTO (CODE, MARQUE, ANNEE, PRIX) VALUES (UPPER(SUBSTR(myMarque, 1,3)||MASEQ.nextval), myMarque, myAnnee, myPrix); 
     COMMIT; 

    ELSIF myAnnee = 2015 THEN 

     INSERT INTO MOTO (CODE, MARQUE, ANNEE, PRIX) VALUES (UPPER(SUBSTR(myMarque, 1,3)||MASEQ.nextval), myMarque, myAnnee, myPrix); 
     COMMIT; 

    ELSIF myAnnee = 2016 THEN 

     INSERT INTO MOTO (CODE, MARQUE, ANNEE, PRIX) VALUES (UPPER(SUBSTR(myMarque, 1,3)||MASEQ.nextval), myMarque, myAnnee, myPrix); 
     COMMIT; 
    ELSE 
     DBMS_OUTPUT.PUT_LINE('Annee invalide SVP VERIFIEZ'); 
    END IF; 



END; 
/

總之我需要的是後顯示的記錄提交,任何想法?我試圖保存在變量lecode的值,但它沒有奏效。

+0

也許你需要最後插入ID http://stackoverflow.com/q/3131064/2298301? –

回答

3

使用RETURNING條款上您的刀片,例如: -

DECLARE 
    strLast_code MOTO.CODE%TYPE; 
BEGIN 
    INSERT INTO MOTO 
    (CODE, MARQUE, ANNEE, PRIX) 
    VALUES 
    (UPPER(SUBSTR(myMarque, 1,3)||MASEQ.nextval), myMarque, myAnnee, myPrix) 
    RETURNING CODE INTO strLast_code; 
END; 
+0

謝謝你,它工作正常。我不知道你能做到這一點 –

0

sequence_name.currval會給序列的當前值。

就像sequence_name.nextval你可以得到sequence_name.currval

0

另一個解決方案是直接從數據庫中的元數據來選擇:

select last_number from all_sequences where sequence_name='MASEQ'; 
相關問題