Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
Как получить значение поля временной таблицы #Table из функции ??? Решил попробовать через вызов хранимой процедуры, которая возвращает значение, из функции. Не хочет. Ну, конечно создаю временную таблицу и вот код процедуры и функции CREATE PROCEDURE GET_FLAG @name varchar(30), @output tinyint OUTPUT AS set @output=(select top 1 Flag from #Flags where Name=UPPER(@name)) GO Теперь опишем функцию CREATE FUNCTION dbo.GetFlag (@name varchar(40) ) RETURNS tinyint AS BEGIN declare @OUT tinyint exec GET_FLAG 'SUPPLIER', @output=@OUT output return isnull(@OUT,0) END Ну в общем код print dbo.GetFlag('SUPPLIER') выдает ошибку, что мол нельзя вызывать хранимую из функции, а вот просто код хранимой процедуры с соотв. параметрами проходит. Может как-то по другому ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2001, 10:26 |
|
||
|
Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
В функциях нельзя использовать временные таблицы. Вместо них следует испоьзовать переменные типа Table. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2001, 10:44 |
|
||
|
Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
Тут наверное всё-таки дело в том, что нельзя из функции вызывать процедуры. Что делать? - Писать попроще, без всяких наворотов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2001, 11:50 |
|
||
|
Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
У меня при конекте с клиентом создается временная таблица (#Table), в ней хранятся необходимые данные. Данные из этой таблице мне нужны в триггерах, и при вставке значений по умолчанию в поля таблиц, с помощью функции. Пусть это будет функция dbo.GetFlag(@name varchar(30)) Она должна выдавать результат типа tinyint. То, что нельзя использовать локальные временные таблицы aka #Table в функциях - я знаю. Но их можно использовать в хранимых процедурах. Теперь вопрос, как запустить хранимую процедуру в моей функции, чтобф она дала мне результат (по крайней мере следующий код, не помог). CREATE PROCEDURE GET_FLAG @name varchar(30), @output tinyint OUTPUT AS set @output=(select top 1 Flag from #Flags where Name=UPPER(@name)) GO Теперь опишем функцию CREATE FUNCTION dbo.GetFlag (@name varchar(40) ) RETURNS tinyint AS BEGIN declare @OUT tinyint exec GET_FLAG 'SUPPLIER', @output=@OUT output return isnull(@OUT,0) END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2001, 11:52 |
|
||
|
Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
судя по всему вы используете временную таблицу совсем не к месту. Используйте вместо неё обычную таблицу, в неё добавьте поле - номер коннекта (@@spid) - и никаких этих проблем не возникнет. Мне аж жутко читать что таблица создаётся при коннекте, а данные из неё используются в триггерах. Не делается так. Скрипт который Вы поместили - в принципе невыполним, как бы Вам этого не хотелось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2001, 13:03 |
|
||
|
Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
2. SergSuper А кто будет чистить эту таблицу в случае, если кто-то из пользователей аварийно отвалится? Ведь не перевелись еще юзеры, которые комп кнопкой power выключают. К тому же @@SPID не является абсолютно уникальным значением в пределах сервера. В общем, может лет через 10 в MSSQL появится аналоги ORACLE-вских package и collection и подобные задачи будут решаться по человечески. А пока приходится через $опу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2001, 16:37 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1824984]: |
0ms |
get settings: |
7ms |
get forum list: |
27ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
82ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 259ms |
| total: | 457ms |

| 0 / 0 |
