2016-09-24 11 views
-1
create sequence MYSEQ_sequence 
start with 100 
increment by 5; 

これで、SQLでシーケンスを作成しました。私は、シーケンスMYSEQのcurvalとnextvalを示すpl/sqlの無名ブロックプログラムユニットを作成したいと思います。誰もがそれをPL/SQLに入れる方法を知っていますか?pl/sqlのシーケンス

単純なクエリを行います

答えて

1

SELECT MYSEQ_sequence.currval, MYSEQ_sequence.nextval 
FROM DUAL 

あなたも、このためのPL/SQLブロックを必要としません。

+0

は申し訳ありませんが、それは、PL/SQLプロシージャが正常に完了したことを表示する必要があります取得します。現在の値:100、次の値:テキストとして105。 –

+0

4行目のエラー: ORA-02287:ここではシーケンス番号は許可されていませんが、どうもありがとうございます。 –

0


こんにちは、
あなたが手順の下に使用することができ、

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; 
+0

それは動作しませんが、ありがとうございます。 –

+0

あなたの試みはどうですか?コードを投稿できますか? –

+0

私はpl/sqlをまだ習得していませんでしたが、それを事前に学習しようとしました。 –

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

SELECT MYSEQ_sequence.currval AS seq 
FROM DUAL 
0

こんにちは私はこの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; 

重要: - あなたが最初に取得する必要がありますこのシーケンスの値は1回です。 あなたは、単一の試みで両方の値を取得する-if、あなたは1つの番号

0
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;