sequence每次生成10条记录

时间:2017-11-01 19:17:36

标签: oracle plsql

我有以下程序。每次执行程序时,我都需要显示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;

但是我不会在下一次运行中返回唯一的数字。我在代码中错过了什么。请帮我解决这个问题。

先谢谢。

1 个答案:

答案 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;

此外,您必须确保在创建时使用INCREMENT BY子句将序列增加10:

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