The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

PlPerl и PlSQL

   Корень / Программисту и web-разработчику / SQL и базы данных / PostgreSQL специфика / PlPerl и PlSQL

----* Реализация для PostgreSQL некоторых популярных функций из состава MySQL (доп. ссылка 1)   Автор: Pavel Stěhule  [комментарии]
  Реализация MySQL функции field для PostgreSQL, позволяющей организовать условную сортировку вывода:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Создание глобальных переменных в pl/perl процедурах в PostgreSQL (доп. ссылка 1)   Автор: Олег Бартунов  [комментарии]
 
CREATE OR REPLACE FUNCTION reset_counter() RETURNS INT AS $$
$_SHARED{counter} = 0;
return 0;
$$ LANGUAGE plperl;

CREATE OR REPLACE FUNCTION counter() RETURNS INT AS $$
return $_SHARED{counter}++;
$$ LANGUAGE plperl;
 
----* Как в PosgreSQL кешировать результат работы функции внутри запроса   [обсудить]
 
CREATE FUNCTION ... LANGUAGE 'SQL' IMMUTABLE;
Для старых версий: CREATE FUNCTION ... LANGUAGE 'SQL' WITH (ISCACHABLE); 
 
----* Pl/Perl для PostgreSQL   Автор: Yuri A. Kabaenkov  [обсудить]
 
Функции написанные на pl/perl и даже pl/pgsql будут работать только в том
случае если у вас установлен данный язык к вашей базе.
Посмотреть какие языки установлены можно командой
'select * from pg_language;`
Обычно стоят только 
С,SQL и internal(что такое объяснять не буду).
Для установке pl/perl вам нужно выполнить  следующую команду.
createlang plperl <dbname>
Если же вы хотите чтоб pl/perl или pl/pgsql устанавливался автоматически на все
создаваемые базы, то
cratelang plperl template1
 
----* Как написать встроенную SQL функцию на Perl и экранировать одинарные кавычки   [комментарии]
 
CREATE FUNCTION totalcomp(integer, integer) RETURNS integer
    AS '
    my $a = ''test''; # ''- Экранирование кавычки.
    return $_[0] + $_[1];
    '
LANGUAGE 'plperl';
 
----* Как создать свою функцию для PostgreSQL.   [обсудить]
 
CREATE FUNCTION login2contract(varchar)
   RETURNS int4               
   AS 'select contract_id from profile where login = $1'                             
   LANGUAGE 'SQL';
CREATE FUNCTION time_minus_int(timestamp, integer)                         
   RETURNS timestamp                    
   AS 'select $1 - interval ($2) AS RESULT'                                           
   LANGUAGE 'SQL';
 

 Версия для печати




  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor TopList