将oracle序列的最小值重置为主键的最大值

时间:2013-12-04 21:50:11

标签: oracle sequence

我的目标:我想创建一个程序,其中的最小值 sequence将从表中的max value主键列开始。所以 我可以使用此序列填充ETL中的主键列 没有任何约束错误的地图。以下是我正在尝试的代码 工作,但我一直有太多的错误。

CREATE OR REPLACE PROCEDURE SET_MDM_IPEDS_SEQ
(P_NAME  IN VARCHAR2,P_VAL IN OUT NUMBER)
IS
V_NUM  NUMBER;
BEGIN
SELECT COALESCE(MAX(IPEDS_ORG_LND_KEY),0) INTO P_VAL FROM MDM_IPEDS_ORG_LND;
SELECT MDM_IPEDS_SEQ.NEXTVAL FROM DUAL INTO V_NUM;
ALTER SEQUENCE MDM_IPEDS_SEQ INCREMENT BY V_VAR;
SELECT MDM_IPEDS_SEQ.NEXTVAL FROM DUAL INTO V_NUM;
ALTER SEQUENCE MDM_IPEDS_SEQ INCREMENT BY 1;
END;
\

1 个答案:

答案 0 :(得分:0)

尝试将ALTER SEQUENCE命令放在'execute immediate'中。