powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 global variables
7 сообщений из 7, страница 1 из 1
DB2 global variables
    #37727590
kalupator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, значения установленные в global variables доступны в рамках текущей сессии? Либо они доступны для всего инстанса в любой момент, после установки даже из разных сессий?
...
Рейтинг: 0 / 0
DB2 global variables
    #37727614
kalupator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос снят, уникальны для сессий

авторA global variable is a representation of a changeable value which can be accessed and modified using SQL statements. These variables have been implemented in DB2 as a new type of database object whose definition is stored in the database catalogs. It is important to understand that only the definition of the global variable is stored in the catalogs and not the actual values. The reason for this is that global variables have a session (connection) scope. This means that every session can use the global variables that exist in the catalogs, but each session has its own private value that it can manipulate and use. No other session can access that value.
...
Рейтинг: 0 / 0
DB2 global variables
    #37727625
kalupator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда может быть кто-нибудь подскажет, как лучше поступить
Код: plsql
1.
select * from table(get_some_data()) where (select set_variables('data','N') from dual)=1;



функция set_variables устанавливает глобальные переменные, которые использует функция get_some_data.
Но проблема в том, что сначала отрабатывает get_some_data, а потом только set_variables.
В Oracle как раз наоборот =)

Обязательное условие: функция get_some_data не должна содержать никаких параметров, установка параметров отдельной функцией. Как выполнить обе функции в правильном порядке одним запросом?
...
Рейтинг: 0 / 0
DB2 global variables
    #37727823
mustaccio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalupator,

Код: sql
1.
2.
with t(a) as  (select set_variables('data','N') from dual)
select * from table(get_some_data());



?
...
Рейтинг: 0 / 0
DB2 global variables
    #37727981
kalupator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mustaccio,

так работать будет, но мне этот вариант не подходит. Я кастомизирую один проект, от которого не имею исходного когда. Компания разработчик предоставили свои интерфейсы и методы обращения к БД, они жестко регламентированы.
В частности выполнения запросов запрещено вообще, разрешено лишь обращение к данным таблицы - оно осуществляется вызoвом функции с двумя параметрами - первый имя таблицы, второе условие отбора where.
Поэтому и был использован такой способ вызов функций после оператора where - другого просто нет =)
В результате формируется запрос вида
Код: plsql
1.
select * from table(get_some_data()) where (select set_variables('data','N') from dual)=1;


где имя таблицы table(get_some_data())
условие (select set_variables('data','N') from dual)=1;
...
Рейтинг: 0 / 0
DB2 global variables
    #37729270
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalupatorтак работать будет,
Не, не будет.
With только определяет таблицы ("функции", если рассматривать реляционное исчисление как функциональные язык). В какой момент будет производиться реальное вычисление ф-и (материализация отношения) и будет ли производиться вообще, определяется оптимизатором. "В этом весь смысл!" :)

Даже если это в какой-то момент заработает, если, к примеру, два запроса
Код: sql
1.
2.
select set_variables('data','N'), CAST(NULL as ...) as some_fake_field_name, ... from table(values(1));
select * from table(get_some_data());


объединить через UNION ALL и запихнуть во VIEW, то никто не гарантирует, что оно не перестанет работать, если, к примеру, поменять степень параллелизма с 1 на N или после установки очередного фикс-пака.

kalupatorно мне этот вариант не подходит. Я кастомизирую один проект, от которого не имею исходного когда. Компания разработчик предоставили свои интерфейсы и методы обращения к БД, они жестко регламентированы.
В частности выполнения запросов запрещено вообще, разрешено лишь обращение к данным таблицы - оно осуществляется вызoвом функции с двумя параметрами - первый имя таблицы, второе условие отбора where.
Поэтому и был использован такой способ вызов функций после оператора where - другого просто нет =)
Если б запрос работал так, как вы хотите, то подходил бы - никто не запрещает сделать на основе этого запроса VIEW.

Доп. вопрос, какой функциональности (с учётом описанного "API") может не хватать при построении вообще всего на системе VIEW?
И почему нельзя в качестве имени таблицы указать table(get_some_data('data','N')), скобки допустимы, а кавычки нет?
...
Рейтинг: 0 / 0
DB2 global variables
    #37730288
kalupator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CawaSPb,

авторДоп. вопрос, какой функциональности (с учётом описанного "API") может не хватать при построении вообще всего на системе VIEW?
Была такая идея, но на VIEW нельзя, т.к. для каждой сессии надо динамически создавать свою VIEW с уникальным именем, что своими силами без соурсов мы не можем сделать.
Да и главная проблема не в этом.
авторИ почему нельзя в качестве имени таблицы указать table(get_some_data('data','N')), скобки допустимы, а кавычки нет?
Во-первых, список всех таблиц, к которым я могу обратится хранится в отдельной структуре, которую заполняет компания-разработчик.
А во-вторых, все куда смешнее - имя таблицы не должно превышать 50 символов. А передаваемые параметры достигают 64000 символов.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 global variables
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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