Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с переменными MSSQL / 18 сообщений из 18, страница 1 из 1
09.01.2019, 15:15
    #39757234
Игорь_UUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
Добрый день.

При определённом выполнении хранимая процедура должна передать параметры в переменную сеанса, которая автоматически "обнулится" по завершению череды выполнения хранимых процедур.

Т.е. вызвали интерфейсную хранимую процедуру, та вызывает вторую, та третью... "где-то в недрах череды выполнения, какая-то" хранимая процедура, сохраняет параметры в глобальную переменную для данного сеанса... и эти параметры могут быть прочитаны в первой хранимой процедуре с которой всё начиналось...

Что-то подобное можно сделать? (output переменной хранимки не предлагать!)
...
Рейтинг: 0 / 0
09.01.2019, 15:28
    #39757249
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
context_info или банальная таблица
...
Рейтинг: 0 / 0
09.01.2019, 15:30
    #39757251
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
Игорь_UUS,

CONTEXT_INFO - не ?

Или, если версия позволяет, совсем "по-богатому" - SESSION_CONTEXT
...
Рейтинг: 0 / 0
09.01.2019, 15:55
    #39757272
Игорь_UUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
courtИгорь_UUS,

CONTEXT_INFO - не ?

Или, если версия позволяет, совсем "по-богатому" - SESSION_CONTEXT

то что надо, спасибо... SESSION_CONTEXT не подойдёт т.к. mssql 2008

существенный минус, что можно сохранить только 128 символов((
...
Рейтинг: 0 / 0
09.01.2019, 15:56
    #39757275
Игорь_UUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
Гавриленко Сергей Алексеевичcontext_info или банальная таблица

"банальная таблица" - идея ясна... но таблица начнёт "копить данные"... тут сложность, что очень много сессий, у каждого могут быть свои сообщения
...
Рейтинг: 0 / 0
09.01.2019, 16:03
    #39757284
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
Игорь_UUSГавриленко Сергей Алексеевичcontext_info или банальная таблица

"банальная таблица" - идея ясна... но таблица начнёт "копить данные"... тут сложность, что очень много сессий, у каждого могут быть свои сообщения"банальная таблица" - это заменитель context_info, в таблице вы можете реализовать точно такую же логику работы, но без ограничения размера.
...
Рейтинг: 0 / 0
09.01.2019, 16:10
    #39757291
Игорь_UUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
courtИгорь_UUS,

CONTEXT_INFO - не ?


а как обнулить данную переменную...

Код: sql
1.
2.
DECLARE @context_info varbinary(128) 
SET CONTEXT_INFO @context_info



пишет ошибку: "инструкция SET CONTEXT_INFO требует параметр varbinary (128) NOT NULL."
...
Рейтинг: 0 / 0
09.01.2019, 16:11
    #39757292
Игорь_UUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
alexeyvgИгорь_UUSпропущено...


"банальная таблица" - идея ясна... но таблица начнёт "копить данные"... тут сложность, что очень много сессий, у каждого могут быть свои сообщения"банальная таблица" - это заменитель context_info, в таблице вы можете реализовать точно такую же логику работы, но без ограничения размера.

используя @@SPID? чтоб сообщения разных сессий не путать...
...
Рейтинг: 0 / 0
09.01.2019, 16:30
    #39757309
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
Игорь_UUScourtИгорь_UUS,

CONTEXT_INFO - не ?


а как обнулить данную переменную...

Код: sql
1.
2.
DECLARE @context_info varbinary(128) 
SET CONTEXT_INFO @context_info




пишет ошибку: "инструкция SET CONTEXT_INFO требует параметр varbinary (128) NOT NULL."
Код: sql
1.
2.
DECLARE @context_info varbinary(128)=CAST(''AS VARBINARY(128));
SET CONTEXT_INFO @context_info;

?
...
Рейтинг: 0 / 0
09.01.2019, 16:31
    #39757311
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
Игорь_UUSно таблица начнёт "копить данные"Если делать правильно (на основе session_id, login_name, login_time) то ничего копить не будет.
...
Рейтинг: 0 / 0
09.01.2019, 16:39
    #39757321
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
Игорь_UUSа как обнулить данную переменную...

Код: sql
1.
set context_info 0x
...
Рейтинг: 0 / 0
09.01.2019, 16:50
    #39757335
Игорь_UUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
ShakillИгорь_UUSа как обнулить данную переменную...

Код: sql
1.
set context_info 0x



Спасибо.. работает!
...
Рейтинг: 0 / 0
09.01.2019, 17:27
    #39757384
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
Когда-то меня достаточно аргументированно отговаривали использовать CONTEXT_INFO, и я внял убеждениям, и тоже с тех пор стараюсь его не использовать. Самая первая ХП создает временную таблицу под переменные, вложенные ХП туда пишут, что нужно, при выходе из первой ХП временная таблица самоудаляется - вроде как ничего сложного.
...
Рейтинг: 0 / 0
10.01.2019, 09:58
    #39757676
Mike_za
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
Сон Веры Павловны,

и ести временная таблица усаствует в джоинах, то получаем гарантированные рекомпиляции на каждом обращении к ней
...
Рейтинг: 0 / 0
10.01.2019, 10:09
    #39757682
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
Mike_zaСон Веры Павловны,

и ести временная таблица усаствует в джоинах, то получаем гарантированные рекомпиляции на каждом обращении к ней
Ну, если человеку нужен был аналог обычной переменной, только глобальной, и его устроил CONTEXT_INFO, то я как-то сомневаюсь, что вокруг этого всего была выстроена какая-то реляционная логика. Скорее всего, обычная императивщина - прочитать значение, записать значение.
...
Рейтинг: 0 / 0
10.01.2019, 10:18
    #39757691
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
Игорь_UUSalexeyvgпропущено...
"банальная таблица" - это заменитель context_info, в таблице вы можете реализовать точно такую же логику работы, но без ограничения размера.

используя @@SPID? чтоб сообщения разных сессий не путать...Да.
Но вообще нужно анализировать вашу архитектуру, возможно, вы решаете через переменные такую задачу, которую обычно решают по другому.
Например, общие данные часто хранят в локальных временных таблицах.
Или разбивают одно бизнес-действие на несколько, с согранением соответствующих промежуточных результатов в постоянных таблицах, что даже часто является более натуральным для бизнеса, а объединено было только фантазиями прораммистов.
...
Рейтинг: 0 / 0
10.01.2019, 12:53
    #39757803
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
Игорь_UUS,

Используйте Output параметр (несмотря на то, что не предлагать!), взаимодействие в хорошей архитектуре должно производиться только через интерфейсы, а не через глобальные переменные. Тем самым вы уменьшаете степень связности и гарантируете, что очередной программист не "забудет" об этой переменной.
...
Рейтинг: 0 / 0
10.01.2019, 21:37
    #39758143
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с переменными MSSQL
Владислав КолосовИгорь_UUS,

Используйте Output параметр (несмотря на то, что не предлагать!), взаимодействие в хорошей архитектуре должно производиться только через интерфейсы, а не через глобальные переменные. Тем самым вы уменьшаете степень связности и гарантируете, что очередной программист не "забудет" об этой переменной.+1. Глобальные переменные зло. А в SQL-е зло вдвойне.

Простите, Игорь_UUS, но вашу архитектуру надо выкинуть на помойку. В этом потом никто кроме вас не разберется.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с переменными MSSQL / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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