我有以下步骤。每次执行该过程时,我需要显示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;但我不会在下一次运行时返回唯一的数字。我在代码中遗漏了什么。关于这个问题,请帮我一下。
提前谢谢。
发布于 2017-11-02 03:47:05
下面是你想要的代码:
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
https://stackoverflow.com/questions/47062129
复制相似问题