SQL.RU
 client/server technologies
 
 Главная | Документация | Статьи | Книги | Форум | Опросы | Рассылка | Работа | Поиск | FAQ |

Добро пожаловать в форум, Guest  >>  Войти | Регистрация | Правила |
Новое сообщение
Форум:Все форумы / PostgreSQL
Автор:    
Пароль:
Эмоции:
Тема:
           Помощь
Сообщение:
 
Приложить файл (максимальный размер 150Kb)
Публикуемые сообщения должны соответствовать правилам форума на sql.ru
Для тех у кого нет русской клавиатуры, предлагаем: Показать виртуальную клавиатуру

 pgAdmin III Query - использование переменных и нескольких строк 
burunduchechek
Member

Откуда:
Сообщений: 13
А можно каким то образом в pgAdmin в диалоге обработки запросов написать несколько строк запроса с использованием промежуточных переменных ?
12 янв 07, 19:25    [3634987] Ответить | Цитировать    Сообщить модератору

 Re: pgAdmin III Query - использование переменных и нескольких строк 
drunk2
Member

Откуда: kaz->rus
Сообщений: 140
нет. придется писать функцию
12 янв 07, 20:45    [3635227] Ответить | Цитировать    Сообщить модератору

 Re: pgAdmin III Query - использование переменных и нескольких строк 
glebofff
Member

Откуда:
Сообщений: 70
drunk2
нет. придется писать функцию

Функцию, действительно, придётся писать! :-)

Опираясь на результаты поиска по форуму, и если очень уж невмоготу, можно проделать что-нибудь подобное:

postgresql.conf:
custom_variable_classes = 'public'

blablabla.sql:
drop function var_set (text,text) cascade;
drop function var_get (text) cascade;

create function var_set (text,text) returns text
as
'
  select set_config (''public.''||$2, $1, false);
' language 'sql';

create function var_get (text) returns text
as
'
  select current_setting(''public.''||$1);
' language 'sql';

create operator >>> (procedure = var_set, leftarg = text, rightarg = text);
create operator <<< (procedure = var_get, rightarg = text);

Проверяем:
test=# select now() >>> 'script start';
           ?column?           
------------------------------
 2007-01-17 10:16:46.29551+05
(1 запись)

test=# select <<< 'script start';
           ?column?           
------------------------------
 2007-01-17 10:16:46.29551+05
(1 запись)

PS: 2domanix, спасибо за инфу, кстати.
17 янв 07, 08:17    [3651516] Ответить | Цитировать    Сообщить модератору

 Re: pgAdmin III Query - использование переменных и нескольких строк 
glebofff
Member

Откуда:
Сообщений: 70
Пожалуй, так будет ещё лучше:

drop function var_set (text,text) cascade;
drop function var_get (text) cascade;

create function var_set (text,text) returns text
as
'
  select set_config (''public.''||$2||pg_backend_pid(), $1, false);
' LANGUAGE 'sql';

create function var_get (text) returns text
as
'
  select current_setting(''public.''||$1||pg_backend_pid());
' LANGUAGE 'sql';

create operator >>> (procedure = var_set, leftarg = text, rightarg = text);
create operator <<< (procedure = var_get, rightarg = text);
17 янв 07, 10:49    [3652380] Ответить | Цитировать    Сообщить модератору

Generated time: 46ms.
Rambler's Top100 Powered by ActualForum 1.5.3 [s1] Copyright (c) Alex Sibilev 2000-2010