2015-07-31 2 views
0

Что здесь не так? Я ищу самый простой способ реализации последовательности NEXTVAL над истинным первичным ключом ID, хранится в таблицуOracle/PostgresQL nextval procedure - самая простая реализация

DECLARE 
smth NUMBER; 
LOOP 
    smth := (select gen_ns_ces_id.nextval from dual); 
    EXIT WHEN smth > (select MAX(ID_NS_WORK) from CES.NS_CES) 
END LOOP; 

CREATE SEQUENCE "CES". "GEN_NS_CES_ID" MINVALUE 1 MAXVALUE 9999999999999999999999999999 Инкримент 2 START С 1837 NOCACHE NOORDER NOCYCLE;

ID NAME 
1845 JONNY 
.. .... 
+0

Не уверен, что понял вопрос. Что вы подразумеваете под «реализацией»? Вы хотите сказать, что вы пытаетесь сбросить значение последовательности на основе наибольшего значения первичного ключа в таблице? – sstan

+0

Да, это правильно –

ответ

2

Если вы используете Oracle, я бы ожидать into:

select gen_ns_ces_id.nextval into smith 
from dual; 
+2

'smth: = gen_ns_ces_id.nextval;' также верно, начиная с Oracle 11. – sstan

+0

мне предупреждающее слово 'select' as wrong –