pl / sql上的序列

时间:2016-09-24 10:55:45

标签: sql oracle plsql

{{1}}

我刚刚在sql中创建了序列。我想创建pl / sql匿名块程序单元,显示序列MYSEQ的curval和nextval。有人知道怎么把它放在pl / sql中吗?

5 个答案:

答案 0 :(得分:3)

一个简单的查询就可以了:

SELECT MYSEQ_sequence.currval, MYSEQ_sequence.nextval
FROM DUAL

你甚至不需要PL / SQL块。

答案 1 :(得分:2)

嗨,您可以使用以下程序,

CREATE OR REPLACE PROCEDURE procedure_name (sequence_name varchar2)
AS
V_NEXTVAL integer;
V_SELECT varchar2(100);
BEGIN
V_SELECT := 'SELECT'||sequence_name||'.NEXTVAL FROM DUAL';
EXECUTE IMMMEDIATE V_SELECT INTO V_NEXTVAL; 
DBMS_OUTPUT.PUTLINE('Nextval is: '||TO_CHAR(V_NEXTVAL));
END;

答案 2 :(得分:2)

CREATE SEQUENCE MYSEQ_sequence
MINVALUE 100
START WITH 100
INCREMENT BY 5;

SELECT MYSEQ_sequence.currval AS seq
FROM DUAL

答案 3 :(得分:1)

您好我测试了这个并且它有效:

DECLARE
   V_CUR    VARCHAR2 (32);
   V_NEXT   VARCHAR2 (32);
BEGIN
   SELECT MYSEQ_SEQUENCE.CURRVAL
     INTO V_CUR
     FROM DUAL;
   SELECT MYSEQ_SEQUENCE.NEXTVAL
     INTO V_NEXT
     FROM DUAL;

   DBMS_OUTPUT.PUT_LINE (V_CUR);
   DBMS_OUTPUT.PUT_LINE (V_NEXT);
END;

重要: - 你必须得到这个序列的第一个值一次。 - 如果您在一次尝试中同时获得两个值,那么您将获得一个数字

答案 4 :(得分:1)

DECLARE
    curr NUMBER;
    nxt NUMBER; 
BEGIN
    SELECT MYSEQ_sequence.currval, MYSEQ_sequence.nextval
    INTO curr, nxt
    FROM DUAL;
    DBMS_OUTPUT.PUT_LINE ('Current value: ' || curr || ' ' || 'Next value: ' || nxt);
END;