powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Получение полей таблицы для построения запроса
6 сообщений из 6, страница 1 из 1
Получение полей таблицы для построения запроса
    #38810233
Aina2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер товарищи.

Нужно сделать следующее.

В запросе, мне нужно получить поля конкретной таблицы (это я могу сделать)

Код: plsql
1.
select RDB$FIELD_NAME from RDB$RELATION_FIELDS  where RDB$RELATION_NAME = <какая-та таблица>



причем мне нужно получить поля в том порядке как они создавались, а не в отсортированном по возрастанию.

затем мне нужно после получения сформировать запрос insert

никак не получается, не могли бы подсказать или как говорится наставить на путь истинный
...
Рейтинг: 0 / 0
Получение полей таблицы для построения запроса
    #38810243
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aina2008,

1)

Код: plsql
1.
2.
select RDB$FIELD_NAME from RDB$RELATION_FIELDS  where RDB$RELATION_NAME = <какая-та таблица>
ORDER BY RDB$FIELD_POSITION



Хотя в контексте вопроса порядок следования полей абсолютно пофиг.

2) Собери в строку в EXECUTE BLOCK к примеру:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
execute block (tablename varchar(32)=?tablename)
returns (sql varchar(5000))
as
declare variable fname varchar(32);
declare variable pars varchar(5000);
begin
  sql='INSERT INTO '||tablename||'(';
  pars=' VALUES (';
  for select trim(RDB$FIELD_NAME) from RDB$RELATION_FIELDS  where RDB$RELATION_NAME = upper(:tablename)
       ORDER BY RDB$FIELD_POSITION
      into :fname
  do begin
         sql=sql||fname||',';
         pars=pars||':'||fname||',';
      end
  sql=trim(',' from sql);
  pars=trim(',' from pars);
  sql=sql||')'||pars||')';
  suspend;
end
...
Рейтинг: 0 / 0
Получение полей таблицы для построения запроса
    #38810245
Aina2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за ответ
...
Рейтинг: 0 / 0
Получение полей таблицы для построения запроса
    #38810388
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RDB$FIELD_POSITION это не "порядок в котором они создавались". RDB$FIELD_ID - вот оно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получение полей таблицы для построения запроса
    #38810418
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Смотрю в LANGREF:

RDB$FIELD_POSITION SMALLINT The position of the column in relation to other columns:
• isql obtains the ordinal position for displaying column values when
printing rows from this column
• gpre uses the column order for SELECT and INSERT statements
If two or more columns in the same table have the same value for this
column, those columns appear in random order

RDB$FIELD_ID SMALLINT Identifier for use in BLR (Binary Language Representation) to name the
column
• Because this identifier changes during backup and restoration of the
database, try to use it in transient requests only
• Do not modify this column


Как бы RDB$FIELD_POSITION лучше подходит.
...
Рейтинг: 0 / 0
Получение полей таблицы для построения запроса
    #38810564
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterКак бы RDB$FIELD_POSITION лучше подходит.
Лучше подходит к чему? Позиция может быть изменена с помощью alter table и уже не будет
соответствовать порядку создания полей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Получение полей таблицы для построения запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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