powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
6 сообщений из 6, страница 1 из 1
Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
    #32016464
X-Defender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как получить значение поля временной таблицы #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') выдает ошибку, что мол нельзя вызывать хранимую из функции, а вот просто код хранимой процедуры с соотв. параметрами проходит.

Может как-то по другому ???
...
Рейтинг: 0 / 0
Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
    #32016466
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В функциях нельзя использовать временные таблицы. Вместо них следует испоьзовать переменные типа Table.
...
Рейтинг: 0 / 0
Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
    #32016476
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут наверное всё-таки дело в том, что нельзя из функции вызывать процедуры.
Что делать? - Писать попроще, без всяких наворотов.
...
Рейтинг: 0 / 0
Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
    #32016477
X-Defender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня при конекте с клиентом создается временная таблица (#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
...
Рейтинг: 0 / 0
Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
    #32016489
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
судя по всему вы используете временную таблицу совсем не к месту.
Используйте вместо неё обычную таблицу, в неё добавьте поле - номер коннекта (@@spid) - и никаких этих проблем не возникнет.
Мне аж жутко читать что таблица создаётся при коннекте, а данные из неё используются в триггерах. Не делается так.

Скрипт который Вы поместили - в принципе невыполним, как бы Вам этого не хотелось
...
Рейтинг: 0 / 0
Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
    #32017081
MishGan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2. SergSuper
А кто будет чистить эту таблицу в случае, если кто-то из пользователей аварийно отвалится?
Ведь не перевелись еще юзеры, которые комп кнопкой power выключают.
К тому же @@SPID не является абсолютно уникальным значением в пределах сервера.
В общем, может лет через 10 в MSSQL появится аналоги ORACLE-вских package и collection и подобные задачи будут решаться по человечески. А пока приходится через $опу.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить значение поля временной таблицы #Table из функции ??? MS SQL 2000
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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