Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Передать в качестве аргумента - указатель н а функцию plpgsql / 7 сообщений из 7, страница 1 из 1
14.06.2006, 11:33
    #33789629
Opilki_Inside
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в качестве аргумента - указатель н а функцию plpgsql
Можно ли в качестве аргумента функции передать указатель на другую в функцию в Pl/Pgsql ?
...
Рейтинг: 0 / 0
14.06.2006, 13:45
    #33790105
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в качестве аргумента - указатель н а функцию plpgsql
Это можно представить как передачу в функцию имени другой функции через текстовый параметр с последующим собиранием текста запроса и его execut'ом.
А это зачем вообще?
...
Рейтинг: 0 / 0
14.06.2006, 16:09
    #33790686
Opilki_Inside
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в качестве аргумента - указатель н а функцию plpgsql
Ну мне нужно например в зависимости от переданных параметров часть строки приводить к нижнему регистру, к верхнему или первая буква заглавная... Причем этот перевод используется в нескольких местах в функции... можно конечно IF-ми обойтись, но красивее было бы использовать указатели... эх..
...
Рейтинг: 0 / 0
14.06.2006, 18:57
    #33791340
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в качестве аргумента - указатель н а функцию plpgsql
может лучше case в запросах юзать?..
...
Рейтинг: 0 / 0
15.06.2006, 07:34
    #33791723
ZemA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в качестве аргумента - указатель н а функцию plpgsql
Opilki_InsideНу мне нужно например в зависимости от переданных параметров часть строки приводить к нижнему регистру, к верхнему или первая буква заглавная... Причем этот перевод используется в нескольких местах в функции... можно конечно IF-ми обойтись, но красивее было бы использовать указатели... эх..

так что ли?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
create or replace function fupper(text)
  returns text as
'
  select upper($1::char) || lower(substring($1 from 2 for length($1)))
' language sql;

create or replace function super_mega_function(text, text)
  returns text as
'
declare
  f_name alias for $1;
  arg alias for $2;
  rec record;
begin
  for rec in execute
    ''select '' || f_name || ''('' || quote_literal(arg) || '') as value''
  loop
    return rec.value;
  end loop;
end;
' language plpgsql;

select 'fupper', super_mega_function('fupper', 'TeSt')
union
select 'lower', super_mega_function('lower', 'TeSt')
union
select 'upper', super_mega_function('upper', 'TeSt')
...
Рейтинг: 0 / 0
15.06.2006, 12:27
    #33792521
Opilki_Inside
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в качестве аргумента - указатель н а функцию plpgsql
Ну почти.. только мне эти функции нужны не в запросах, а просто
у меня есть переменая
str text;
str = upper($1);

Проблема в том, что функция очень критичная в части производительности... большие объемы текстов обрабатывает... не знаю как такая конструкция будет работать в части производительности
...
Рейтинг: 0 / 0
15.06.2006, 12:45
    #33792593
ZemA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в качестве аргумента - указатель н а функцию plpgsql
Opilki_Inside
не знаю как такая конструкция будет работать в части производительности

смотря на каких запросах, функциях. думаю надо просто потестировать :)
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Передать в качестве аргумента - указатель н а функцию plpgsql / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]