pl/sql oracle如何检查或如何存储序列的当前值

pl/sql oracle如何检查或如何存储序列的当前值,oracle,plsql,Oracle,Plsql,我正在尝试在将记录插入表后显示它。但是我的主键是一个带有序列的子字符串,所以我找不到保存该值的方法…这是我的代码 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 myMarqu

我正在尝试在将记录插入表后显示它。但是我的主键是一个带有序列的子字符串,所以我找不到保存该值的方法…这是我的代码

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中,但没有成功。

在插入项上使用
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;

在插入内容中使用
返回
子句,例如:

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;

sequence\u name.currval
将给出序列的当前值


就像
sequence\u name.nextval
一样,您可以获得
sequence\u name.currval

sequence\u name.currval
将给出序列的当前值


就像
sequence\u name.nextval
一样,您可以获得
sequence\u name.currval

另一种解决方案是直接从数据库的元数据中选择:

select last_number from all_sequences where sequence_name='MASEQ';

另一种解决方案是直接从数据库的元数据中选择:

select last_number from all_sequences where sequence_name='MASEQ';

也许您需要最后一个插入id?也许您需要最后一个插入id?谢谢,它工作正常。我不知道你能做到谢谢你,它很好用。我不知道你能做到