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