powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Порядок вызова RDB$GET_CONTEXT / RDB$SET_CONTEXT
10 сообщений из 10, страница 1 из 1
Порядок вызова RDB$GET_CONTEXT / RDB$SET_CONTEXT
    #39893069
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вновь понадобилось решать мою любимую задачу - вывод в результате запроса поля "Номер записи".
Решил использовать эти функции, и появился вопрос.
Вот запрос:

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
  CAST( COALESCE( RDB$GET_CONTEXT( 'USER_TRANSACTION', 'ROW#' ), 0 ) AS INTEGER ) + 1 AS ROWNUM1,
  RDB$SET_CONTEXT( 'USER_TRANSACTION', 'ROW#', CAST( COALESCE( RDB$GET_CONTEXT( 'USER_TRANSACTION', 'ROW#' ), 0 ) + 1 AS INTEGER ) ) AS ROWNUM_EXISTS,
  CAST( COALESCE( RDB$GET_CONTEXT( 'USER_TRANSACTION', 'ROW#' ), 0 ) AS INTEGER ) + 1 AS ROWNUM2,
  CAST( COALESCE( RDB$GET_CONTEXT( 'USER_TRANSACTION', 'ROW#' ), 0 ) AS INTEGER ) + 1 AS ROWNUM3
FROM RDB$RELATIONS R
     LEFT JOIN RDB$RELATION_FIELDS F ON F.RDB$RELATION_NAME = R.RDB$RELATION_NAME



В результатах поле ROWNUM1 начинается с двойки , а ROWNUM2 - с единицы, ROWNUM3 - тоже с единицы (это для тестов, так то мне надо только один ROWNUM)...

Можете объяснить логику?
А то боязно просто перенести RDB$GET_CONTEXT после RDB$SET_CONTEXT и получить, что мне нужно...

ФБ 3.0.4.
...
Рейтинг: 0 / 0
Порядок вызова RDB$GET_CONTEXT / RDB$SET_CONTEXT
    #39893074
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ух, йоооо!!!
это ж надо было изобразить такую заковыристую ж@пу...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Порядок вызова RDB$GET_CONTEXT / RDB$SET_CONTEXT
    #39893075
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
ух, йоооо!!!
это ж надо было изобразить такую заковыристую ж@пу...
Я в общем-то уже и раздумал выводить номер записи запросом - обойдусь.

Но всё таки хотелось бы получить понимание по вопросу топика.
...
Рейтинг: 0 / 0
Порядок вызова RDB$GET_CONTEXT / RDB$SET_CONTEXT
    #39893083
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неее, это не для вечера пятницы.
...
Рейтинг: 0 / 0
Порядок вызова RDB$GET_CONTEXT / RDB$SET_CONTEXT
    #39893087
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

раз уж используешь тройку, то зачем извращаться с переменными, когда есть специально заточенный инструмент

Код: sql
1.
2.
3.
4.
SELECT
    ROW_NUMBER() OVER(ORDER BY R.rdb$relation_name) AS RN,
    R.*
FROM RDB$RELATIONS R 
...
Рейтинг: 0 / 0
Порядок вызова RDB$GET_CONTEXT / RDB$SET_CONTEXT
    #39893089
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
YuRock,

раз уж используешь тройку, то зачем извращаться с переменными, когда есть специально заточенный инструмент

Код: sql
1.
2.
3.
4.
SELECT
    ROW_NUMBER() OVER(ORDER BY R.rdb$relation_name) AS RN,
    R.*
FROM RDB$RELATIONS R 


Спасибо, конечно, я знаю об этом способе, и я использую не только тройку.

Для тройки (и, возможно, не только) меня интересует вопрос топика (а именно: "Можете объяснить логику?") .
...
Рейтинг: 0 / 0
Порядок вызова RDB$GET_CONTEXT / RDB$SET_CONTEXT
    #39893102
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Спасибо, конечно, я знаю об этом способе, и я использую не только тройку.
Везде есть SP\EB

YuRock
Можете объяснить логику?
Можем. Но не будем. Ибо нефиг :)
...
Рейтинг: 0 / 0
Порядок вызова RDB$GET_CONTEXT / RDB$SET_CONTEXT
    #39893144
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
Везде есть SP\EB
А еще клиентская сторона! (что я, в итоге, и выберу)

hvlad
YuRock
Можете объяснить логику?
Можем. Но не будем. Ибо нефиг :)


Ну спасибо и на этом :)
...
Рейтинг: 0 / 0
Порядок вызова RDB$GET_CONTEXT / RDB$SET_CONTEXT
    #39893206
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
А еще клиентская сторона! (что я, в итоге, и выберу)


Слабак. Dataset.RecNo и дурак сможет вывести.
...
Рейтинг: 0 / 0
Порядок вызова RDB$GET_CONTEXT / RDB$SET_CONTEXT
    #39913955
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Можете объяснить логику?


а разве логика не очевидная ?

Код: plaintext
1.
2.
3.
int i = 0;

printf("%d  %d  %d  %d", i+1, (++i, +1), i+1, i+1);



Некропостинг, да, но про логику почему-то никто так и не сказал
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Порядок вызова RDB$GET_CONTEXT / RDB$SET_CONTEXT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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