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

Откуда: Химки МО
Сообщений: 1248
Необходимо создать глобальную переменную которая бы была видна из разных сессий.

Например
Declare @Id Int
Set @Id=1

create proc test as
select * from table1 where field1=@Id order by field2
go

Вопрос как создать такую переменную?
24 окт 05, 13:22    [1998165]     Ответить | Цитировать Сообщить модератору
 Re: глобальные переменные  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
Создать постоянную таблицу.
24 окт 05, 13:23    [1998169]     Ответить | Цитировать Сообщить модератору
 Re: глобальные переменные  [new]
Петров Андрей
Member

Откуда: Химки МО
Сообщений: 1248
Ну это крайний случай...
А как насчет переменной?
24 окт 05, 13:23    [1998185]     Ответить | Цитировать Сообщить модератору
 Re: глобальные переменные  [new]
vooo
Member

Откуда:
Сообщений: 1316
можно также через VIEW или функцию
24 окт 05, 13:25    [1998197]     Ответить | Цитировать Сообщить модератору
 Re: глобальные переменные  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
vooo
можно также через VIEW или функцию

Это уже не очень и переменная.
24 окт 05, 13:26    [1998214]     Ответить | Цитировать Сообщить модератору
 Re: глобальные переменные  [new]
Петров Андрей
Member

Откуда: Химки МО
Сообщений: 1248
Смотрю раздел Help-а по Global Variables и вижу только @@ переменные...

Да View не интересен. Интересна процедура...
24 окт 05, 13:29    [1998234]     Ответить | Цитировать Сообщить модератору
 Re: глобальные переменные  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
В филосовском плане глобальными переменными в сиквелсервере и являются значения из постоянных таблиц. Зачем велосипед то изобретать?
24 окт 05, 13:53    [1998381]     Ответить | Цитировать Сообщить модератору
 Re: глобальные переменные  [new]
Timon
Member

Откуда: Dushanbe TJK
Сообщений: 2688
tpg прав

Сделайте таблицу, пусть она будет состоять из одной строки, и используйте её в своих запросах через join, ну или на крайний случай сделайте функцию которая будет выдавать вам значение этой глобальной переменной, и используйте себе на здоровье в запросах.
24 окт 05, 14:06    [1998447]     Ответить | Цитировать Сообщить модератору
 Re: глобальные переменные  [new]
Петров Андрей
Member

Откуда: Химки МО
Сообщений: 1248
Ясно. В общем их тут нема. Спасибо тема закрыта.
24 окт 05, 14:23    [1998539]     Ответить | Цитировать Сообщить модератору
 Re: глобальные переменные  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
интересно в чем разница между статичной функцией и глобальной переменной?

сделал постоянную табличку
в нее юзернаме или spid, имяпеременной, значение

и к примеру пару функций
getglobalvar(@varname) и setglobalvar(@varname)

и во вьюшках используй себе на здоровье
select * from mytable where id = getglobalvar('имяпеременной')
24 окт 05, 14:50    [1998712]     Ответить | Цитировать Сообщить модератору
 Re: глобальные переменные  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
MsDatabaseru
сделал постоянную табличку
в нее юзернаме или spid, имяпеременной, значение

и к примеру пару функций
getglobalvar(@varname) и setglobalvar(@varname)

и во вьюшках используй себе на здоровье
select * from mytable where id = getglobalvar('имяпеременной')

Угу. И плюс к этому следующие проблемы:

Если используется "юзернаме", то это решение неприменимо к системам, где под одним и тем же логином ходит куча пользователей. Я не спорю, что это не есть хорошо, но такие системы есть, и их немало.

Если используется spid, то надо писать обвязку, которая бы следила за тем, что делать, когда:
- коннект непредвиденно отваливается
- или предвиденно, но программер забыл написать или написал неправильно очистку этой таблицы от своих сессионных данных
- да еще помнить про то, что spid - штука повторно используемая сиквелом.
- и про то, что некоторые либы (не будем далеко ходить - ADO) имеют привычку открывать в некоторых случаях новый коннект самостоятельно во время выполнения, не извещая об этом программиста.

То есть не все так радужно, мол, написали одну строчку и бац - все заработало.
24 окт 05, 16:07    [1999256]     Ответить | Цитировать Сообщить модератору
 Re: глобальные переменные  [new]
ChA
Member

Откуда: Москва
Сообщений: 11137
MsDatabaseru

сделал постоянную табличку
в нее юзернаме или spid, имяпеременной, значение

и к примеру пару функций
getglobalvar(@varname) и setglobalvar(@varname)
С функцией setglobalvar номер не пройдет, если только не будете внутри нее вызывать ESP и обратно коннектиться к серверу, что несколько накладно. Так что, скорее всего, только процедура...
24 окт 05, 16:13    [1999293]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить