2017-11-01 14 views
0

私は以下の手順があります。この手順を実行するたびに、10個の固有のレコードを表示する必要があります。シーケンスは毎回10個のレコードを生成します

CREATE OR REPLACE PROCEDURE USERAUTHENTICATIONCODEWRITE 
AS 
    v_counter NUMBER; 
BEGIN 
SELECT SEQ_USER_AUTHENTICATION_CODES2.NEXTVAL INTO v_counter FROM DUAL; 
LOOP 
v_counter := v_counter + 1; 
-- if EXIT condition yields TRUE exit the loop 
IF v_counter = 11 THEN 
EXIT; 
END IF; 
DBMS_OUTPUT.PUT_LINE ('AUTHENTICATION_CODES = '||v_counter); 
END LOOP; 
v_counter := v_counter; 
-- control resumes here 
DBMS_OUTPUT.PUT_LINE ('Done...'); 
END; 

しかし、私は次の実行で一意の番号を返しません。私がコードで見逃しているもの。この問題に関して私を助けてください。

ありがとうございました。

+0

Iドンあなたのコードを理解していない、なぜあなたはシーケンスを使用する場合、あなた自身のカウンターを増やすのですか? V_counter = 11は後続の実行では機能しません。 @Cyrille MODIANO。 –

+0

それでは、毎回一意のレコードをどのように生成できますか? –

答えて

0

ここであなたが望むコードです:

CREATE OR REPLACE PROCEDURE USERAUTHENTICATIONCODEWRITE 
AS 
    v_counter NUMBER; 
BEGIN 
    SELECT SEQ_USER_AUTHENTICATION_CODES2.NEXTVAL INTO v_counter FROM DUAL; 
    FOR i in 1..10 
    LOOP 
     v_counter := v_counter + 1 
     DBMS_OUTPUT.PUT_LINE ('AUTHENTICATION_CODES = '||v_counter); 
    END LOOP; 
END; 

また、あなたは、あなたがそれを作成するときBY句INCREMENTを使用して10で、あなたの順序の増分ていることを確認する必要があります。

https://docs.oracle.com/database/121/SQLRF/statements_6017.htm#SQLRF01314

+0

それは完全に働いています。あなたの助けに感謝:)私は本当に感謝します。 –

+0

あなたの問題を解決した場合は、私の回答に合格とマークしてください。 –

関連する問題