【问题标题】:pl/sql oracle how to check or how to store the current value of a sequencepl/sql oracle如何检查或如何存储一个序列的当前值
【发布时间】:2017-02-07 22:26:53
【问题描述】:

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

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

【问题讨论】:

标签: oracle plsql


【解决方案1】:

在 INSERTS 上使用 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;

【讨论】:

  • 谢谢它工作正常。我不知道你能做到这一点
【解决方案2】:

sequence_name.currval 将给出序列的当前值。

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

【讨论】:

    【解决方案3】:

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

    select last_number from all_sequences where sequence_name='MASEQ';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-29
      • 2012-12-22
      • 2022-01-18
      • 2021-11-24
      • 2016-12-23
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多