Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.024 c
1-1097829182
doodle
2004-10-15 12:33
2004.10.31
Как создать собственный графический интерфейс.


1-1097686792
AlexKocharin
2004-10-13 20:59
2004.10.31
Копирование Printer.Canvas в Bitmap


6-1093416257
BVV
2004-08-25 10:44
2004.10.31
idMappedPortTCP


3-1096876376
neat
2004-10-04 11:52
2004.10.31
DBGrid: увеличение высоты строки


1-1098083698
Kniaz
2004-10-18 11:14
2004.10.31
Контроль за исключениями




   Наверх