問題シーケンスを「1」に戻すことができません。 私は以下のようにシーケンス...50ずつ増分するOracleシーケンスをリセットする
DROP SEQUENCE TEST_SEQ;
CREATE SEQUENCE TEST_SEQ MINVALUE 1 START WITH 1 INCREMENT BY 50;
をやって作成しました「のnextval」、出力は手順以下は1
SELECT TEST_SEQ.NEXTVAL FROM DUAL; --> output is '1'
は私がリセットするために使用していますこのコミュニティからのものです私はnextValueメソッドチェックしたときに、私は51のような出力を取得しています。しかし、私はOUTPを必要とするシーケンスをリセットした後シーケンス
CREATE OR replace PROCEDURE RESET_SEQ(p_seq_name IN VARCHAR2)
IS
l_val NUMBER;
l_minvalue user_sequences.min_value%TYPE;
BEGIN
SELECT min_value
INTO l_minvalue
FROM user_sequences
WHERE sequence_name = Upper(p_seq_name);
EXECUTE IMMEDIATE 'SELECT '||p_seq_name||'.NEXTVAL FROM DUAL' INTO l_val;
l_val := l_val - l_minvalue;
EXECUTE IMMEDIATE 'ALTER SEQUENCE '||p_seq_name||'INCREMENT BY -'||l_val||
'MINVALUE '||l_minvalue;
EXECUTE IMMEDIATE 'SELECT '||p_seq_name||'.NEXTVAL FROM DUAL' INTO l_val;
EXECUTE IMMEDIATE 'ALTER SEQUENCE '||p_seq_name||'INCREMENT BY 50 MINVALUE '
||l_minvalue;
END;
/
BEGIN
RESET_SEQ('TEST_SEQ');
END;
/
utを1とする。
SELECT TEST_SEQ.NEXTVAL FROM DUAL; - >出力は '51'です。
私がシーケンスをドロップして再作成するときだけ、次の値を '1'として得ることができます。
私の出力が「1」になるように上記の手順を変更してください。
可能な重複[Iは、Oracleのシーケンスをリセットするにはどうすればよい?](http://stackoverflow.com/questions/51470/how-do-i-reset-a-sequence-in-oracle) – Aleksej
可能性のある[Oracleの順序をリセットしてMIN VALUE = 1およびSTARTINGの値を1にする]の複製(http://stackoverflow.com/questions/30158866/reset-oracle-sequence-to-have-minvalue-1-and- 1からの開始数) – GurV