![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Временные таблицы в функциях [D7, MSSQL]
NewDelpher © (2004-10-04 15:35:00)MS SQL не разрешает создавать временные таблицы в хранимых функциях, а у меня есть запрос, использующий временные таблицы и мне нужно его поместить в функцию. В Stored Procedure такое возможно, но как сделать, чтобы она возвращала таблицу?..
Nikolay M. (2004-10-05 11:36:00) [1]
> Polevi © (05.10.04 11:27) [12]
Где конкретно внутрях? В оперативке? В темпдб не увидел.
Polevi (2004-10-05 11:27:00) [2]внутрях все равно это временная таблица
DECLARE @T TABLE (ID INT PRIMARY KEY CLUSTERED)
INSERT @T SELECT 1
INSERT @T SELECT 1
Nikolay M. (2004-10-04 17:25:00) [3]
> Polevi © (04.10.04 16:24) [10]
Аргументы? DECLARE @T TABLE (...) просто по конструкции декларирует переменную и в БОЛ о DECLARE TABLE написано:
Defines the table data type. The table declaration includes column definitions, names, data types, and constraints. The only constraint types allowed are PRIMARY KEY, UNIQUE KEY, NULL, and CHECK.
Polevi (2004-10-04 16:24:00) [4]>Nikolay M. © (04.10.04 16:14) [8]
нет таблица :)
NewDelpher (2004-10-04 16:17:00) [5]спасибо, разобрался
Nikolay M. (2004-10-04 16:14:00) [6]
> Почитал, только не понял, их удалять получается не надо
> при выходе из функции?
@T TABLE (..) - это не таблица, а переменные табличного типа, поэтому удалять их не нужно.
NewDelpher (2004-10-04 16:08:00) [7]
> Fay © (04.10.04 16:03) [6]
> Почему бы не почитать BOL?
Почитал, только не понял, их удалять получается не надо при выходе из функции?
Fay (2004-10-04 16:03:00) [8]Почему бы не почитать BOL?
NewDelpher (2004-10-04 15:58:00) [9]
> не разрешаются DDL выражения,
> заменяй CREATE TABLE #T(...) на DECLARE @T TABLE (..)
тогда так мой запрос будет выглядеть:
SELECT number INTO @tmp_numbs
FROM mytable WHERE status= 1 and datenumb = @date_numb
NewDelpher (2004-10-04 15:50:00) [10]в функции пишу:
SELECT number INTO #tmp_numbs
FROM mytable WHERE status= 1 and datenumb = @date_numb
при проверке синтаксиса
выдает:
Cannot accsess temporary tables from within a function
Polevi (2004-10-04 15:50:00) [11]>MS SQL не разрешает создавать временные таблицы в хранимых функциях
не разрешаются DDL выражения,
заменяй CREATE TABLE #T(...) на DECLARE @T TABLE (..)
Ega23 (2004-10-04 15:41:00) [12]Она тебе набор данных возвратит.
1. Можешь временные таблицы ##ttt типа использовать - они "живут" пока сервер не перезапустят
2. Можешь временные таблицы #ttt типа использовать, если всё в рамках одной транзакции.
Fay (2004-10-04 15:39:00) [13]>> MS SQL не разрешает создавать временные таблицы в хранимых функциях
Это очень спорное утверждение. Откуда такая информация? Вы сами проверяли? Думаю, нет.