powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как в функции получить значение поля, имя которого заранее не известно?
8 сообщений из 8, страница 1 из 1
как в функции получить значение поля, имя которого заранее не известно?
    #35257810
непонимайу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create or replace function ft_fet(tb_name text, tb_id int)
returns varchar as
$$
declare
  _name varchar;
  _sql text;
  _rec record;
begin
  _sql='select name_'||tb_name||' from '||tb_name||' where '||tb_name||'_id='||tb_id;
  for _rec in execute _sql
  loop
    _name=_rec.'name_'||tb_name; -- как тут получить значение поля, имя которого заранее не известно?
  end loop;

end;  
$$
language 'plpgsql';
...
Рейтинг: 0 / 0
как в функции получить значение поля, имя которого заранее не известно?
    #35257830
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно, если поле заранее не известно, то нужно обращать свой взгляд на динамическое построение и выполнение запроса...
Возможно, поиск чем-то и поможет...
...
Рейтинг: 0 / 0
как в функции получить значение поля, имя которого заранее не известно?
    #35257855
Serik Akhmetov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно так
Код: plaintext
1.
2.
3.
4.
  _sql := 'select name_' || tb_name || ' as field1 from ' || tb_name || ' where ' || tb_name || '_id=' || tb_id;
  for _rec in execute _sql
  loop
    _name := _rec.field1;
  end loop;
можно воспользоваться plperl, там вообще гибко.
...
Рейтинг: 0 / 0
как в функции получить значение поля, имя которого заранее не известно?
    #35257910
непонимайу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serik Akhmetov
Код: plaintext
 _name := _rec.field1;
Код: plaintext
ERROR:  record "_rec" has no field "field1"
...
Рейтинг: 0 / 0
как в функции получить значение поля, имя которого заранее не известно?
    #35257994
SeniorAndre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для EXECUTE работает INTO, вот пример...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        
--Теперь стряпаем селект, который определит подходит тип докумнта для данной таблицы или нет...
        cSql:=  'SELECT COUNT(doctype.doctypeid) '||
                'FROM doctype, doc '||
                'WHERE   doctype.doctypeid=doc.doctypeid AND '||
                '        doc.docid='''||cDocID||''' AND '||
                '        doctype.doctypesystem ~~* '''||cDocTypeSystem||'''';
        RAISE DEBUG '%', cSql;
        EXECUTE cSql INTO iCount;
        IF iCount= 0  THEN
               RAISE EXCEPTION 'В таблицу % не нельзя вводить тип документа - %', TG_table_name, cDocTypeSystem;
        END IF;
...
Рейтинг: 0 / 0
как в функции получить значение поля, имя которого заранее не известно?
    #35258096
Serik Akhmetov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
непонимайу
Код: plaintext
ERROR:  record "_rec" has no field "field1"
На PostgreSQL 8.2.4 работает. Какая у вас версия ?
...
Рейтинг: 0 / 0
как в функции получить значение поля, имя которого заранее не известно?
    #35258163
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serik Akhmetov непонимайу
Код: plaintext
ERROR:  record "_rec" has no field "field1"
На PostgreSQL 8.2.4 работает. Какая у вас версия ?очевидно, что автором не была проделана первая половина:
Код: plaintext
' as field1 from '
т.ч....
...
Рейтинг: 0 / 0
как в функции получить значение поля, имя которого заранее не известно?
    #35258306
непонимайу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321очевидно, что автором не была проделана первая половина:
Код: plaintext
' as field1 from '
т.ч....виноват
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как в функции получить значение поля, имя которого заранее не известно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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