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

Откуда:
Сообщений: 48
Всем привет!!!
в нескольких процедурах используется временная таблица #temp, в нее заносятся значения.
После чего мне нужно в функции взять из нее значения. Напрямую вызвать select * from #temp нельзя.
А можно ли другим способом вытащить от туда значения?
8 окт 12, 10:23    [13282625]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и функции  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
shustrik,Какие проблемы и в чем вопрос????
ну так и присвойте нужные значения переменным или соединитесь с этой таблицей.
Или вопрос: почему функции не дают написать select,который возвращает результирующий набор?
8 окт 12, 10:43    [13282745]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и функции  [new]
shustrik
Member

Откуда:
Сообщений: 48
есть функция
CREATE FUNCTION fn_temp()
RETURNS varchar(max)
AS
BEGIN
DECLARE @var varchar(200);
SELECT @var = value from #temp;
return @var;
END


В функциях #temp использовать нельзя. Но значение из нее очень нужны.
Так как получить?
8 окт 12, 10:51    [13282794]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и функции  [new]
Glory
Member

Откуда:
Сообщений: 104751
shustrik
В функциях #temp использовать нельзя. Но значение из нее очень нужны.
Так как получить?

Никак
8 окт 12, 10:52    [13282802]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и функции  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Из ф-ции нереально обратиться к Вр. табл. Возможно CLR поможет ? Не проверял. :)

Вы уверены, что нужна именно ф-ция и что без неё нельзя обойтись ?
8 окт 12, 10:54    [13282817]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и функции  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
shustrik
есть функция
CREATE FUNCTION fn_temp()
RETURNS varchar(max)
AS
BEGIN
DECLARE @var varchar(200);
SELECT @var = value from #temp;
return @var;
END


В функциях #temp использовать нельзя. Но значение из нее очень нужны.
Так как получить?
Вопрос не в том, нужны из неё значения или нет.
Вопрос в том, зачем нужна функция?
Почему нельзя приджойнить #temp во FROMе?
8 окт 12, 10:56    [13282822]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и функции  [new]
Crimean
Member

Откуда:
Сообщений: 13147
LSV
Возможно CLR поможет ?


возможно. в CLR есть доступ к временным объектам - проверял :) только вот решение это будет, мягко говоря, "через владивосток"
8 окт 12, 11:04    [13282865]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и функции  [new]
shustrik
Member

Откуда:
Сообщений: 48
эта функция будет использоваться во view.
Даже если обойдусь функции, то и во вьюшках использовать нельзя.
8 окт 12, 11:09    [13282900]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и функции  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
shustrik
эта функция будет использоваться во view.
Даже если обойдусь функции, то и во вьюшках использовать нельзя.
Что мешает во FROMах запросов использовать не VIEW, а непосредственно #temp?
8 окт 12, 11:12    [13282923]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и функции  [new]
Crimean
Member

Откуда:
Сообщений: 13147
shustrik
эта функция будет использоваться во view.
Даже если обойдусь функции, то и во вьюшках использовать нельзя.


ну это как-то совсем уже криво :)
временная таблица + UDF на нее + VIEW на все это великолепие?
делайте таблицу постоянной
8 окт 12, 18:25    [13286604]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и функции  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
shustrik,

может быть есть возможность использовать табличные переменные в функциях? перед этим заполнять их из временной таблицы.

create type my_table_type as table
(
	id int primary key,
	name varchar(100)
)
go

create function fn_temp(@id int, @tbl my_table_type readonly)
returns varchar(max)
as
begin
	return (select top(1) name from @tbl where id = @id)
end
go
12 окт 12, 16:24    [13309623]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить