|
|
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
|