Дано: таблицы, определяющие некоторые объекты (пользователи, группы пользователей, процессы, элементы и т.д.)
Надо: разработать ХП, которая для любого из объектов возвращает следующее значение по умолчанию для поля "наименование".
Простите если не понятно, сейчас объясню. Получение информации об объекте и сохранение объекта в базе реализовано с помощью ХП. Работа ХП для каждого из объектов аналогичная.
При запросе информации об объекте (например для процесса), если запись с запрошенным ID отсутствует, то возвращаются значения по умолчанию (данный случай возникает при работе с новой записью).
Для поля, которое определяет наименование объекта должно возвращаться генериремое значение вида "Процесс_1".
Вот код ХП, которая возвращает это генерируемое значение:
Код: Выделить всё
CREATE PROCEDURE GET_DEFAULTTITLE(
TABLE_NAME VARCHAR(50) CHARACTER SET NONE,
FIELD_NAME VARCHAR(50) CHARACTER SET NONE,
TITLE VARCHAR(50) CHARACTER SET NONE)
RETURNS(
DEFAULT_TITLE VARCHAR(50) CHARACTER SET NONE)
AS
DECLARE VARIABLE I BIGINT;
DECLARE VARIABLE RECORD_ID BIGINT;
DECLARE VARIABLE STR VARCHAR(100) CHARACTER SET NONE;
BEGIN
I = 1;
WHILE (1 = 1) DO
BEGIN
STR = :TITLE || '_' || CAST(:I AS VARCHAR(10));
EXECUTE STATEMENT 'SELECT ID FROM ' || TABLE_NAME || ' WHERE ' || FIELD_NAME || ' = ''' || STR || '''' INTO :RECORD_ID;
IF ((RECORD_ID IS NULL) OR (RECORD_ID = 0)) THEN
BEGIN
DEFAULT_TITLE = :STR;
LEAVE;
END
ELSE
BEGIN
I = :I + 1;
END
END
EXIT;
END
Подскажите пожалуйста