Хочу сделать универсальную процедуру для получения значения генератора. Смысл которой очень прост, процедура в качестве параметра принимает текстову переменную GEN_NAME с именем генератора и по имени в этой переменной выполняет стандартную процедуру получения следующего значения генератора.
Вот два варианта которыми я пытался это сделать:
ALTER PROCEDURE NEW_PROCEDURE (
GEN_NAME VARCHAR(20))
RETURNS (
NEW_ID INTEGER)
AS
begin
/*первый вариант*/
select gen_id(:gen_name, 1) from RDB$DATABASE into :new_id;
/*второй вариант*/
NEW_ID = gen_id(GEN_NAME, 1);
suspend;
end
В обоих случаях выдается ошибка.
Мне не понятно почему нельзя подставить имя в SQL запрос, т.е. gen_id(:gen_name, 1), а так же загвоздка в том что я не знаю как получить сам объект (генератор) через его имя в переменной (второй вариант).
Подскажите пожалуста как это можно сделать.