Как перевести следующее значение в последовательности в переменную?

Итак, я пишу хранимую процедуру, и у меня возникают проблемы с получением следующего значения последовательности в переменной.

Имя последовательности передается в функцию и сохраняется как переменная varchar2. Как вы можете поместить следующее значение в этой последовательности в локальную переменную.


person user439199    schedule 14.06.2011    source источник


Ответы (1)


Что-то вроде этого?

create or replace procedure next_val (p_sequence_name varchar2)
as

v_nextval integer;
v_select varchar2(100);

begin

v_select := 'select '||p_sequence_name||'.nextval from dual';

execute immediate v_select into v_nextval;

dbms_output.put_line('Nextval is: '||TO_CHAR(v_nextval));

end;
person Patrick Marchand    schedule 14.06.2011
comment
Вы также можете запустить EXECUTE IMMEDIATE 'BEGIN :ret := '||p_sequence_name||'.nextval; END;' USING OUT v_nextval; - person Wernfried Domscheit; 16.09.2018