|
su.dbms.sql- SU.DBMS.SQL ------------------------------------------------------------------ From : Alexander Bodnar 2:5020/400 21 Feb 2001 18:13:54 To : All Subject : Создание функции в PostgreSQL -------------------------------------------------------------------------------- Привет всем. Проблема с написанием функции. Hаписал вод такую функцию. Функция создает новый объект и прописывает его в таблице, если его нет. А затем должна создать последовательность для данного объекта, но не создает. Там где создается последовательность стоят звездочки. CREATE FUNCTION CreateObject(varchar(600)) RETURNS int4 AS ' DECLARE ObjectName ALIAS FOR $1; ObjectID int4; ObjectFound int4; ObjectSeqName char; BEGIN ObjectID := 0; SELECT INTO ObjectFound count(*) FROM Objects WHERE name=ObjectName; IF ObjectFound = 0 THEN SELECT INTO ObjectID nextval(''Objects_Seq''); INSERT INTO Objects(ID, NAME) VALUES(ObjectID, ObjectName); ObjectSeqName := ''ObjectLog'' || ObjectID || ''_Seq''; CREATE SEQUENCE ObjectSeqName start 1 increment 1 maxvalue 2147483647 minvalue 1 cache 1 CYCLE;" ***************** END IF; RETURN ObjectID; END; ' LANGUAGE 'plpgsql'; При выполнении этой функции выдается ошибка - ERROR: parser: parse error at or near "$1" Если убрать строку создания последовательности то все ОК, но последовательность соответственно не создается. Если вместо имени последовательности поставить просто имя, а не переменную, то все ОК, последовательность создается, но мне нужно для каждого объекта своя последовательность, а не одна на всех. Может я не так, что-то записал? Подскажите пожалуйста. --- ifmail v.2.15dev5 * Origin: Unknown (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms.sql/913845f4941c.html, оценка из 5, голосов 12
|