Oracle 存储过程中查询序列值并用变量接收


1、创建一个序列

  1. -- Create sequence
  2. createsequence SEQ_TEST_JOB
  3. minvalue 1
  4. maxvalue 9999999999999999
  5. start with 2
  6. increment by 1
  7. cache 20;

2、创建包头

  1. CREATEORREPLACE PACKAGE PKG_TEST_JOB IS
  2. -- Author : ADMINISTRATOR
  3. -- Created : 2012-11-2 PM 11:35:40
  4. -- Purpose : 测试JOB定时运行
  5. FUNCTION F_TEST_JOB_SEQ RETURN NUMBER;
  6. END PKG_TEST_JOB;

3、创建包体

  1. CREATEORREPLACE PACKAGE BODY PKG_TEST_JOB IS
  2. -- Author : ADMINISTRATOR
  3. -- Created : 2012-11-2 PM 11:35:40
  4. -- Purpose : 测试JOB定时运行
  5. FUNCTION F_TEST_JOB_SEQ RETURN NUMBER IS
  6. V_JOB_SEQ NUMBER(10);
  7. BEGIN
  8. SELECT HUIW.SEQ_TEST_JOB.NEXTVAL INTO V_JOB_SEQ FROM DUAL;
  9. RETURN V_JOB_SEQ;
  10. END F_TEST_JOB_SEQ;
  11. END PKG_TEST_JOB;

注意红色字体:

SELECT HUIW.SEQ_TEST_JOB.NEXTVAL INTO V_JOB_SEQ FROM DUAL;

不能直接将序列值赋给变量,如:

V_JOB_SEQ :=HUIW.SEQ_TEST_JOB.NEXTVAL;

会产生错误:PLS-00357: 在此上下文中不允许表,视图或序列引用 'SEQ_TEST_JOB.NEXTVAL'

相关内容