Форум: "Базы";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];
ВнизПроблема выполнения одной хранимой процедуры для разных таблиц Найти похожие ветки
← →
Пубертанец (2004-05-21 15:51) [0]Есть хранимая процедура:
CREATE PROCEDURE GETNEWID
RETURNS (
NEWID INTEGER)
AS
begin
NEWID=GEN_ID(GEN_ID_TABLE1,1);
suspend;
end
Я хочу, чтобы эта процедура выполнялась не только для генератора GEN_ID_TABLE1, но и для GEN_ID_TABLE2, GEN_ID_TABLE3 ... GEN_ID_TABLEN. Т.е. передавать в эту процедуру параметр с именем генератора - но как это сделать не знаю.
← →
Соловьев © (2004-05-21 15:59) [1]Я тоже бился над этим
EXECUTE STATEMENT в ФБ 1.5 думал выручит... Но нет не вышло
...
EXECUTE STATEMENT "SELECT GEN_ID("||:NAME_GEN||",1) FROM RDB$DATABASE " || TableName INTO :ID;
...
Выдает ошибку, но самое интересное что генератор срабатывает, а ID - NULL
Если решишь - свистни :)
← →
Desdechado © (2004-05-21 16:06) [2]странный подход...
неужели удобнее вызывать процедуру из одной строчки, чем просто сделать gen_id - это же в разы быстрее!
← →
Пубертанец (2004-05-21 16:11) [3]Эту процедуру я вызываю из клиента, чтобы заранее знать, какой будет ID. Если есть другие мысли - подскажи.
← →
Johnmen © (2004-05-21 16:20) [4]>Соловьев © (21.05.04 15:59) [1]
А что значит у тебя TableName в приведенном контексте?
:)
← →
Соловьев © (2004-05-21 16:22) [5]:)
писал на скору руку
насамом деле так:
EXECUTE STATEMENT "SELECT GEN_ID("||:NAME_GEN||",1) FROM RDB$DATABASE " INTO :ID;
← →
Desdechado © (2004-05-21 16:38) [6]ну, дык этот селект можно и на клиенте вызвать, зачем процедуру-то?!
← →
Johnmen © (2004-05-21 16:40) [7]>Соловьев © (21.05.04 16:22) [5]
ID должен быть объявлен как BIGINT, т.к. значение генератора именно этого типа.
А для поддержания BIGINT нужен 3 диалект...
:)
← →
Пубертанец (2004-05-21 16:43) [8]>Desdechado
И как его вызвать из клиента? Если SELECT MAX(ID), затем увеличить значение на 1, то не подойдет - надо увеличить и значение соответствующего генератора
← →
Desdechado © (2004-05-21 17:19) [9]select gen_id( genName, 1 ) from rdb$database
и никаких max!
← →
Пубертанец (2004-05-21 17:47) [10]Прокатит.
Спасибо!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.062 c