Главная страница


su.dbms.sql

 
 - SU.DBMS.SQL ------------------------------------------------------------------
 From : Andrei N.Sobchuck                    2:5020/400     21 Feb 2001  19:20:52
 To : "Alexander Bodnar"
 Subject : Re: Создание функции в PostgreSQL
 -------------------------------------------------------------------------------- 
 
 Приветствую, "Alexander Bodnar" <bodnar@malva.com.ua>!
 
 > Привет всем.
 >
 > Проблема с написанием функции.
 > 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"
 > Если убрать строку создания последовательности то все ОК, но
 > последовательность соответственно не создается.
 > Если вместо имени последовательности поставить просто
 > имя, а не переменную, то все ОК, последовательность создается,
 > но мне нужно для каждого объекта своя последовательность,
 > а не одна на всех.
 > Может я не так, что-то записал?
 > Подскажите пожалуйста.
 
 Здаётся мне, что единственное что можна сделать -
 это переписать функцию на pgtcl.
 Там можна запрос на лету формируется лёгко.
 
 >
 >
 
 --- ifmail v.2.15dev5
  * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Создание функции в PostgreSQL   Alexander Bodnar   21 Feb 2001 18:13:54 
 Re: Создание функции в PostgreSQL   Andrei N.Sobchuck   21 Feb 2001 19:20:52 
 Создание функции в PostgreSQL   Roman Dawydkin   23 Feb 2001 13:02:39 
Архивное /su.dbms.sql/2969045ef5e18.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional