Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как сделать контекст ?  [new]
nxx
Member

Откуда:
Сообщений: 2030
сам на MSSQL недавно, всю жизнь сидел на оракле...
подскажите, если ли тут аналог оракловых контекстов или пакетных переменных.
суть: нужна глобальная переменная привязанная к сессии/коннекту
в которую можно один раз записать, а потом чтоб все процедуры могли оттуда читать
для чего: локализация
в таблицах есть переводы названий на разные языки
нужно чтоб процедуры и вью возвращали данные только для текущего языка
1 ноя 13, 11:56    [15063527]     Ответить | Цитировать Сообщить модератору
 Re: как сделать контекст ?  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
nxx
если ли тут аналог оракловых контекстов или пакетных переменных.
Прямого аналога нет. Есть set context_info. Но пользоваться этим неудобно и накладно.
nxx
суть: нужна глобальная переменная привязанная к сессии/коннекту
в которую можно один раз записать, а потом чтоб все процедуры могли оттуда читать
Элементарно реализуется с через таблицу.
1 ноя 13, 13:14    [15064300]     Ответить | Цитировать Сообщить модератору
 Re: как сделать контекст ?  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
invm
nxx
если ли тут аналог оракловых контекстов или пакетных переменных.
Прямого аналога нет. Есть set context_info. Но пользоваться этим неудобно и накладно.
nxx
суть: нужна глобальная переменная привязанная к сессии/коннекту
в которую можно один раз записать, а потом чтоб все процедуры могли оттуда читать
Элементарно реализуется с через таблицу.


Не знаю...Мы сделали процедуру установки контекста и функцию выборки и нормально пользуемся
CREATE PROCEDURE [dbo].[spSetContext] @i_Context NVARCHAR(64)
AS
	DECLARE @BinaryContext varbinary(128)
	SELECT @BinaryContext = CAST(@i_Context AS varbinary(128))
	SET CONTEXT_INFO @BinaryContext
GO
CREATE FUNCTION [dbo].[GetContext]() 
RETURNS NVARCHAR(128)
AS
BEGIN
	RETURN(CAST(CONTEXT_INFO() AS NVARCHAR(128)))
END
GO
exec  [dbo].[spSetContext] 'MyContext'
GO
select [dbo].[GetContext] ()
1 ноя 13, 13:24    [15064406]     Ответить | Цитировать Сообщить модератору
 Re: как сделать контекст ?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
LexusR,

Насколько удобно здесь пользоваться, например, десятком-другим параметров?
1 ноя 13, 13:39    [15064553]     Ответить | Цитировать Сообщить модератору
 Re: как сделать контекст ?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
для чего: локализация


А прямые пути не устраивают?!

После коннекта, например:

SET LANGUAGE Italian


Потом где угодно используем @@LANGID или @@LANGUAGE
1 ноя 13, 14:39    [15065234]     Ответить | Цитировать Сообщить модератору
 Re: как сделать контекст ?  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
Гость333
LexusR,

Насколько удобно здесь пользоваться, например, десятком-другим параметров?



про десяток параметров я не говорил мы используем одну переменную идентфицирующую поток обработки
1 ноя 13, 14:52    [15065357]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить