编写将记录插入表中的存储过程。我在设置seq.nextval
值时遇到问题。在插入的表中,似乎有时表中的最大id值高于nextval
所指示的值。
SELECT TABLE_SEQ.NEXTVAL AS CASE_ID
FROM DUAL;
CASE_ID
1015
SELECT MAX(CASE_ID) AS CASE_ID
FROM CASE_TABLE;
CASE_ID
2015
我需要检查表的nextval
是什么,然后比较ID字段的最大值,如果nextval value is lower than the Max id value, I need to increment the
nextval`值,则直到它高于最大id值1。
Oracle的SQL Developer工具的新手,我一直在研究如何做到这一点,但找不到方法。有没有人有任何想法分享?
非常感谢!!!!
答案 0 :(得分:0)
我不太清楚你如何面对所描述的结果。但我会建议你玩这个序列。要重置它,例如:
alter sequence seq_nameincrement by 124;
select seq_name.nextval from dual;
alter sequence seq_name increment by 1;
答案 1 :(得分:0)
这里有效:
select max(pk) y from sometable;
select seq.currval x from dual;
# or
select seq.nextval x from dual;
DECLARE
l_val NUMBER;
BEGIN
FOR i IN 1..<y-x>
LOOP
l_val := sometable.NEXTVAL;
END LOOP;
END;
ORA-32793: cannot alter a system-generated sequence
可以通过以下方式引发。
alter sequence FORMS_SQ increment by 1 minvalue 0