powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Глобальные переменные
6 сообщений из 6, страница 1 из 1
Глобальные переменные
    #32032132
unknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Давно очень сильно хотелось глобалных переменных или констант, всякие суррогаты, типа запроса из таблицы с константами абсолютно не радовали.

Случайно нашел такое

getdefault(smallint,int)
идентификатор базы, идентификатор объекта default(тот, который обычно к колонкам биндится)
возвращает значение того типа, что и default

функция недокументирована, работает в 7 и 8, кажется
права на выполнения everyone

но такой запрос не проходит
select getdefault(db_id(),object_id('name_def'))
поэтому ценность сильно ограничена

Может кто уже юзал и нашел применение?
...
Рейтинг: 0 / 0
Глобальные переменные
    #32032157
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никогда не пользовался и не слышал об этой функции. Хотя она интересна, использовать ее опасно, вдруг удалят? Вообще, полагаю что недокументированные вещи нужны в двух случаях: когда нужно сделать что-то разовое, на скорую руку и когда ничто кроме недокументированной команды не помогает решить проблему/понять суть происходящего.

Касательно вызова можно сделать через Dynamic SQL (то, что не работает в том варианте, что Вы привели – следствие того, что это внутренняя функция, не способная принимать аргументы кроме констант, если так можно выразится).

USE tempdb
GO

CREATE DEFAULT MyDefault AS 777
GO

declare @sql nvarchar(1000), @ret int
SET @sql = N'SELECT @ret = getdefault(' + CAST(db_id() as varchar(3)) +',' + CAST(OBJECT_ID('MyDefault') as varchar(16)) + ')'
EXECUTE sp_executesql @sql, N'@ret int OUT', @ret OUT
SELECT @ret
GO

Спасибо за интересную информацию!

Удачи
...
Рейтинг: 0 / 0
Глобальные переменные
    #32032219
unknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>>Касательно вызова можно сделать через Dynamic SQL (то, что не работает в том варианте, что Вы привели – следствие того, что это внутренняя функция, не способная принимать аргументы кроме констант, если так можно выразится).

Весь смысл констант(для меня) в том, что их можно получить везде, хоть во view. Поэтому никакие execstrы не помогут:-((

А аргументы она принимает любые(иначе бы ругалась), но интерпертирует их странновато! При передачи функции, например, db_id(), она ее значение(или ссылку??? на нее) берет ,как 0, а при обычной переменной, она берет какое-то значение, отличное от настоящего значения переменной.

Хотелось бы разобраться в этом, а никакой информации нет

По поводу того, что ее могут неожиданно удалить: я пишу под 7, в 8 она еще есть, это свобода для апгрейда:-)

PS есть такие *.pdb файлы(Microsoft C/C++ program database 2.00) чем их можно посмотреть, не ставя, например, Visual Studio
...
Рейтинг: 0 / 0
Глобальные переменные
    #32032305
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про getdefault я уже давно писал в каком-то из топиков "А знаете ли вы ?". В качестве первого параметра может быть не только идентфикатор БД, но и ее наименование. Недостаток функции в том, что она в качестве параметров воспринимает только литералы, что исключает использование переменных. В том же топике был пример функции ее использования, разумеется, только для SQL2K.

В качестве глобальных констант обычно использую, как я их для себя называю, константные представления.
Простейший пример:
CREATE VIEW PiConst AS
SELECT CAST(3.14 AS real) AS Value
На практике очень удобно. Таким образом вы можете строить любые наборы констант - многострочные через UNION ALL, или с несколькими полями, одним из которых, в частности может быть наименование константы. В дальнейшем вызывать их по месту, что выполняется весьма резво, например

WHERE fld = (SELECT Value FROM PiConst)

Отсюда много дополнительных возможностей проистекает...
...
Рейтинг: 0 / 0
Глобальные переменные
    #32032311
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO в SQL2000 с появлением типа данных sql_variant и UDF, вариант хранения глобальных переменных в таблице выглядит очень даже прилично.
...
Рейтинг: 0 / 0
Глобальные переменные
    #32032316
unknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1 Век живи-век учись
2 Век живи-век учись использовать поиск

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


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