Табличная переменная в виде параметра

MorAdan
Дата: 12.02.2010 12:34:38
Есть процедурка внутри нее обявляеться переменная аля
Declare @t table (id int,val float)
По ходу процедуры он заполняеться кучей данных. Можно ли потом эту переменную передать в другую процедуру или функцию, но так чтоб они могли в ней что то изменять и возвращать обратно в первую измененные данные.
Пытался сделать через UDT и передать в процедуру, но ругается что параметр должен быть Обязательно ReadOnly.
Какие есть варианты реализации данного алгоритма?
Гавриленко Сергей Алексеевич
Дата: 12.02.2010 12:35:52
Сделать из переменной временную таблицу, тогда она отлично будет видна во всех вызываемых процедурах.
MorAdan
Дата: 12.02.2010 12:38:35
А если из под одной сессии будет запускаться процедура в нескольких потоках(просто предположение) то эта временная таблица будет видна всем потокам в пределах этой транзакции?
pkarklin
Дата: 12.02.2010 13:03:59
автор
изменять и возвращать обратно в первую измененные данные.


C табличными параметрами такой фокус не пройдет.
pkarklin
Дата: 12.02.2010 13:05:35
MorAdan
А если из под одной сессии будет запускаться процедура в нескольких потоках(просто предположение) то эта временная таблица будет видна всем потокам в пределах этой транзакции?


У одной сесси на стороне сервера не может быть несколько потоков (не путать с распараллеливанием). Но временная таблица, созданная в хп, будет видна во всех хп, вызываемых из нее (включая вложенные).
vlas
Дата: 12.02.2010 14:13:09
Тип данных параметра (возможно, с указанием схемы, которой он принадлежит). Для функций Transact-SQL допустимы любые типы данных, включая определяемые пользователем типы данных CLR и определяемые пользователем табличные типы, за исключением типа данных timestamp. Для функций CLR допустимы все типы данных, включая пользовательские типы данных CLR, за исключением типов данных text, ntext, image, определяемых пользователем табличных типов и типов данных timestamp. Нескалярные типы cursor и table не могут быть указаны в качестве типов данных параметров ни для функций Transact-SQL, ни для функций CLR.
BOL


SQL SERVER без границ
pkarklin
Дата: 12.02.2010 14:56:40
vlas,

Странно, стрелял Дантес речь идет о хп, а памятник Пушкину цитату Вы привели о CREATE FUNCTION.
vlas
Дата: 13.02.2010 10:53:48
pkarklin
vlas,

Странно, стрелял Дантес речь идет о хп, а памятник Пушкину цитату Вы привели о CREATE FUNCTION.


Если почитать MSDN по ссылке, то ясно, что табличная переменная не может быть параметром как функции так и хп
SQL SERVER без границ
vlas
Дата: 13.02.2010 10:55:23
vlas
Нескалярные типы cursor и table не могут быть указаны в качестве типов данных параметров ни для функций Transact-SQL, ни для функций CLR.
BOL


SQL SERVER без границ
vlas
Дата: 13.02.2010 11:00:33
vlas
pkarklin
vlas,

Странно, стрелял Дантес речь идет о хп, а памятник Пушкину цитату Вы привели о CREATE FUNCTION.


Если почитать MSDN по ссылке, то ясно, что табличная переменная не может быть параметром как функции так и хп
SQL SERVER без границ


Извините, обшибся.

В этой ссылке нет информации про хп.

А вот здесь есть:
BOL

data_type

Is the parameter data type. All data types, except the table data type, can be used as a parameter for a stored procedure. However, the cursor data type can be used only on OUTPUT parameters. When you specify a data type of cursor, the VARYING and OUTPUT keywords must also be specified.

CREATE PROCEDURE BOL