powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / RDB$GET_CONTEXT и диалекты
8 сообщений из 8, страница 1 из 1
RDB$GET_CONTEXT и диалекты
    #39509049
AnyUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FB 2.5.7.27050
в 1-м диалекте на запросе:
Код: plsql
1.
2.
3.
4.
5.
6.
select
  cast(coalesce(RDB$GET_CONTEXT('USER_TRANSACTION', 'AROW'), 0) as integer) + 1
  +
  cast(RDB$SET_CONTEXT('USER_TRANSACTION', 'AROW', cast(coalesce(RDB$GET_CONTEXT('USER_TRANSACTION', 'AROW'), 0) as integer) + 1) as integer)*0
  as ROWNUM
from TABLENAME T


на швабре будет написано:
Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
numeric value is out of range.

если переписать так:
Код: plsql
1.
2.
3.
4.
5.
6.
select
  cast(cast(coalesce(RDB$GET_CONTEXT('USER_TRANSACTION', 'AROW'), 0) as double precision) + 1 as integer)
  +
  cast(RDB$SET_CONTEXT('USER_TRANSACTION', 'AROW', cast(coalesce(RDB$GET_CONTEXT('USER_TRANSACTION', 'AROW'), 0) as double precision) + 1) as integer)*0
  as ROWNUM
from TABLENAME T


то всё работает
PS: в третьем диалекте работает и первый вариант. С учётом каста к integer это баг или так и задумано?
...
Рейтинг: 0 / 0
RDB$GET_CONTEXT и диалекты
    #39516290
AnyUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Up
...
Рейтинг: 0 / 0
RDB$GET_CONTEXT и диалекты
    #39516327
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnyUser,

переходи на 3.0. Там есть оконная функция ROW_NUMBER и не придётся использовать мутные плюшки для нумерации строк
...
Рейтинг: 0 / 0
RDB$GET_CONTEXT и диалекты
    #39516343
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnyUserесли переписать такМинимизировать не получилось? А-то как-то не совсем очевидно, что именно не помещается.
...
Рейтинг: 0 / 0
RDB$GET_CONTEXT и диалекты
    #39516503
AnyUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,
Не совсем понял вопрос.
После первого выполнения
Код: plsql
1.
2.
3.
cast(coalesce(RDB$GET_CONTEXT('USER_TRANSACTION', 'AROW'), 0) as integer) + 1
  +
  cast(RDB$SET_CONTEXT('USER_TRANSACTION', 'AROW', cast(coalesce(RDB$GET_CONTEXT('USER_TRANSACTION', 'AROW'), 0) as integer) + 1) as integer)*0

в первом диалекте RDB$GET_CONTEXT('USER_TRANSACTION', 'AROW') возвратит '1.000000000'
Чего по логике быть не должно
...
Рейтинг: 0 / 0
RDB$GET_CONTEXT и диалекты
    #39516523
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Воспроизводится?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
RDB$GET_CONTEXT и диалекты
    #39516586
AnyUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,
Да, на последнем снепшоте 2.5 включительно и на месячной давности 3.0.3
...
Рейтинг: 0 / 0
RDB$GET_CONTEXT и диалекты
    #39516885
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В трекер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / RDB$GET_CONTEXT и диалекты
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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