Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: CL | DM;

Вниз

Временные таблицы в функциях   Найти похожие ветки 

 
NewDelpher ©   (2004-10-04 15:35) [0]

MS SQL не разрешает создавать временные таблицы в хранимых функциях, а у меня есть запрос, использующий временные таблицы и мне нужно его поместить в функцию. В Stored Procedure такое возможно, но как сделать, чтобы она возвращала таблицу?..


 
Fay ©   (2004-10-04 15:39) [1]

>> MS SQL не разрешает создавать временные таблицы в хранимых функциях
Это очень спорное утверждение. Откуда такая информация? Вы сами проверяли? Думаю, нет.


 
Ega23 ©   (2004-10-04 15:41) [2]

Она тебе набор данных возвратит.

1. Можешь временные таблицы ##ttt типа использовать - они "живут" пока сервер не перезапустят
2. Можешь временные таблицы #ttt типа использовать, если всё в рамках одной транзакции.


 
NewDelpher ©   (2004-10-04 15:50) [3]

в функции пишу:

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) [4]

>MS SQL не разрешает создавать временные таблицы в хранимых функциях

не разрешаются DDL выражения,
заменяй CREATE TABLE #T(...) на DECLARE @T TABLE (..)


 
NewDelpher ©   (2004-10-04 15:58) [5]


> не разрешаются DDL выражения,
> заменяй CREATE TABLE #T(...) на DECLARE @T TABLE (..)

тогда так мой запрос будет выглядеть:

SELECT number INTO @tmp_numbs
FROM mytable WHERE status= 1 and datenumb = @date_numb


 
Fay ©   (2004-10-04 16:03) [6]

Почему бы не почитать BOL?


 
NewDelpher ©   (2004-10-04 16:08) [7]


> Fay ©   (04.10.04 16:03) [6]
> Почему бы не почитать BOL?

Почитал, только не понял, их удалять получается не надо при выходе из функции?


 
Nikolay M. ©   (2004-10-04 16:14) [8]


> Почитал, только не понял, их удалять получается не надо
> при выходе из функции?

@T TABLE (..) - это не таблица, а переменные табличного типа, поэтому удалять их не нужно.


 
NewDelpher ©   (2004-10-04 16:17) [9]

спасибо, разобрался


 
Polevi ©   (2004-10-04 16:24) [10]

>Nikolay M. ©   (04.10.04 16:14) [8]
нет таблица :)


 
Nikolay M. ©   (2004-10-04 17:25) [11]


> 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-05 11:27) [12]

внутрях все равно это временная таблица

DECLARE @T TABLE (ID INT PRIMARY KEY CLUSTERED)
INSERT @T SELECT 1
INSERT @T SELECT 1


 
Nikolay M. ©   (2004-10-05 11:36) [13]


> Polevi ©   (05.10.04 11:27) [12]

Где конкретно внутрях? В оперативке? В темпдб не увидел.



Страницы: 1 вся ветка

Текущий архив: 2004.10.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
3-1096477969
mid
2004-09-29 21:12
2004.10.31
function based индекс в oracle


9-1088556429
Xerx
2004-06-30 04:47
2004.10.31
Вуфер трафарета


4-1096280567
Konrads
2004-09-27 14:22
2004.10.31
Время бездействия программы


1-1097912661
Igor_
2004-10-16 11:44
2004.10.31
EhLib


1-1097691283
Mishenka
2004-10-13 22:14
2004.10.31
Treeview с галочками...