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

автор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
28.03.2012, 15:28
    #37727625
kalupator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 global variables
тогда может быть кто-нибудь подскажет, как лучше поступить
Код: 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
28.03.2012, 16:34
    #37727823
mustaccio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 global variables
kalupator,

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



?
...
Рейтинг: 0 / 0
28.03.2012, 17:29
    #37727981
kalupator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 global variables
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
29.03.2012, 12:52
    #37729270
CawaSPb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 global variables
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
29.03.2012, 19:32
    #37730288
kalupator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 global variables
CawaSPb,

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


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