|
|
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Добрый день! Давно очень сильно хотелось глобалных переменных или констант, всякие суррогаты, типа запроса из таблицы с константами абсолютно не радовали. Случайно нашел такое getdefault(smallint,int) идентификатор базы, идентификатор объекта default(тот, который обычно к колонкам биндится) возвращает значение того типа, что и default функция недокументирована, работает в 7 и 8, кажется права на выполнения everyone но такой запрос не проходит select getdefault(db_id(),object_id('name_def')) поэтому ценность сильно ограничена Может кто уже юзал и нашел применение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2002, 17:49:51 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Никогда не пользовался и не слышал об этой функции. Хотя она интересна, использовать ее опасно, вдруг удалят? Вообще, полагаю что недокументированные вещи нужны в двух случаях: когда нужно сделать что-то разовое, на скорую руку и когда ничто кроме недокументированной команды не помогает решить проблему/понять суть происходящего. Касательно вызова можно сделать через 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 Спасибо за интересную информацию! Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2002, 02:59:24 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
>>Касательно вызова можно сделать через Dynamic SQL (то, что не работает в том варианте, что Вы привели – следствие того, что это внутренняя функция, не способная принимать аргументы кроме констант, если так можно выразится). Весь смысл констант(для меня) в том, что их можно получить везде, хоть во view. Поэтому никакие execstrы не помогут:-(( А аргументы она принимает любые(иначе бы ругалась), но интерпертирует их странновато! При передачи функции, например, db_id(), она ее значение(или ссылку??? на нее) берет ,как 0, а при обычной переменной, она берет какое-то значение, отличное от настоящего значения переменной. Хотелось бы разобраться в этом, а никакой информации нет По поводу того, что ее могут неожиданно удалить: я пишу под 7, в 8 она еще есть, это свобода для апгрейда:-) PS есть такие *.pdb файлы(Microsoft C/C++ program database 2.00) чем их можно посмотреть, не ставя, например, Visual Studio ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2002, 10:16:10 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Про getdefault я уже давно писал в каком-то из топиков "А знаете ли вы ?". В качестве первого параметра может быть не только идентфикатор БД, но и ее наименование. Недостаток функции в том, что она в качестве параметров воспринимает только литералы, что исключает использование переменных. В том же топике был пример функции ее использования, разумеется, только для SQL2K. В качестве глобальных констант обычно использую, как я их для себя называю, константные представления. Простейший пример: CREATE VIEW PiConst AS SELECT CAST(3.14 AS real) AS Value На практике очень удобно. Таким образом вы можете строить любые наборы констант - многострочные через UNION ALL, или с несколькими полями, одним из которых, в частности может быть наименование константы. В дальнейшем вызывать их по месту, что выполняется весьма резво, например WHERE fld = (SELECT Value FROM PiConst) Отсюда много дополнительных возможностей проистекает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2002, 15:44:32 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
IMHO в SQL2000 с появлением типа данных sql_variant и UDF, вариант хранения глобальных переменных в таблице выглядит очень даже прилично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2002, 16:02:38 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32032305&tid=1822425]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 327ms |

| 0 / 0 |
