powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Табличная переменная в виде параметра
15 сообщений из 15, страница 1 из 1
Табличная переменная в виде параметра
    #36465481
MorAdan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть процедурка внутри нее обявляеться переменная аля
Код: plaintext
Declare @t table (id int,val float)
По ходу процедуры он заполняеться кучей данных. Можно ли потом эту переменную передать в другую процедуру или функцию, но так чтоб они могли в ней что то изменять и возвращать обратно в первую измененные данные.
Пытался сделать через UDT и передать в процедуру, но ругается что параметр должен быть Обязательно ReadOnly.
Какие есть варианты реализации данного алгоритма?
...
Рейтинг: 0 / 0
Табличная переменная в виде параметра
    #36465486
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать из переменной временную таблицу, тогда она отлично будет видна во всех вызываемых процедурах.
...
Рейтинг: 0 / 0
Табличная переменная в виде параметра
    #36465497
MorAdan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если из под одной сессии будет запускаться процедура в нескольких потоках(просто предположение) то эта временная таблица будет видна всем потокам в пределах этой транзакции?
...
Рейтинг: 0 / 0
Табличная переменная в виде параметра
    #36465594
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторизменять и возвращать обратно в первую измененные данные.

C табличными параметрами такой фокус не пройдет.
...
Рейтинг: 0 / 0
Табличная переменная в виде параметра
    #36465598
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MorAdanА если из под одной сессии будет запускаться процедура в нескольких потоках(просто предположение) то эта временная таблица будет видна всем потокам в пределах этой транзакции?

У одной сесси на стороне сервера не может быть несколько потоков (не путать с распараллеливанием). Но временная таблица, созданная в хп, будет видна во всех хп, вызываемых из нее (включая вложенные).
...
Рейтинг: 0 / 0
Табличная переменная в виде параметра
    #36465868
vlas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тип данных параметра (возможно, с указанием схемы, которой он принадлежит). Для функций Transact-SQL допустимы любые типы данных, включая определяемые пользователем типы данных CLR и определяемые пользователем табличные типы, за исключением типа данных timestamp. Для функций CLR допустимы все типы данных, включая пользовательские типы данных CLR, за исключением типов данных text, ntext, image, определяемых пользователем табличных типов и типов данных timestamp. Нескалярные типы cursor и table не могут быть указаны в качестве типов данных параметров ни для функций Transact-SQL, ни для функций CLR.
BOL


SQL SERVER без границ
...
Рейтинг: 0 / 0
Табличная переменная в виде параметра
    #36466056
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlas,

Странно, стрелял Дантес речь идет о хп, а памятник Пушкину цитату Вы привели о CREATE FUNCTION.
...
Рейтинг: 0 / 0
Табличная переменная в виде параметра
    #36467337
vlas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklinvlas,

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

Если почитать MSDN по ссылке, то ясно, что табличная переменная не может быть параметром как функции так и хп
SQL SERVER без границ
...
Рейтинг: 0 / 0
Табличная переменная в виде параметра
    #36467338
vlas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vlasНескалярные типы cursor и table не могут быть указаны в качестве типов данных параметров ни для функций Transact-SQL, ни для функций CLR.
BOL


SQL SERVER без границ
...
Рейтинг: 0 / 0
Табличная переменная в виде параметра
    #36467339
vlas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vlaspkarklinvlas,

Странно, стрелял Дантес речь идет о хп, а памятник Пушкину цитату Вы привели о 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
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Табличная переменная в виде параметра
    #37783613
Алексей Cивоплясов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlas,

У меня недавно была такая задача.
Сервер MSSQL 2008. Можно использовать создаваемый табличный тип и передавать его как параметр.
Найдено клик .
...
Рейтинг: 0 / 0
Табличная переменная в виде параметра
    #37784048
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Cивоплясовvlas,

У меня недавно была такая задача.
Сервер MSSQL 2008. Можно использовать создаваемый табличный тип и передавать его как параметр.
Найдено клик .Думаете, ТС не нашёл за 2 года решение???
...
Рейтинг: 0 / 0
Табличная переменная в виде параметра
    #37788903
Алексей Cивоплясов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

Думаю, информация пригодится тому, кто ее будет на форуме искать. И ответ положен в тему исходя из этих соображений.
Если Вы относитесь к группе администраторов либо модераторов форума, то думаю, следует тему "забанить" чтобы форум не переполнялся ответами с разрывом более года. Как думаете?
...
Рейтинг: 0 / 0
Табличная переменная в виде параметра
    #37981250
MyNiGoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Cивоплясов, спасибо
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Табличная переменная в виде параметра
    #39659551
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Cивоплясовvlas,
Сервер MSSQL 2008. Можно использовать создаваемый табличный тип и передавать его как параметр.

Но только READONLY. Однако, вернуть табличку может табличная функция.

Итого пробуем:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
IF OBJECT_ID (N'dbo.MyFuncTest', N'TF') IS NOT NULL
	DROP FUNCTION dbo.MyFuncTest
GO
IF TYPE_ID(N'MyTestTableType') IS NOT NULL
	DROP TYPE MyTestTableType
GO
CREATE TYPE MyTestTableType AS TABLE (Id int, [Text] varchar(255))
GO
CREATE FUNCTION dbo.MyFuncTest (@MyInTable MyTestTableType READONLY)
	RETURNS @ret TABLE (Id int, [Text] varchar(255))
AS
BEGIN
	INSERT INTO @ret (Id, [Text]) SELECT Id+3, [Text] = 'old id = ' + CAST(id AS varchar) FROM @MyInTable
	RETURN
END
GO

DECLARE @MyTest AS MyTestTableType

INSERT  INTO @MyTest
		(Id, [Text])
	VALUES (1759, 'id = 1759'),
		(1760, 'id = 1760'),
		(1761, 'id = 1761');

INSERT INTO @MyTest 
	SELECT * FROM dbo.MyFuncTest(@MyTest)

SELECT * FROM @MyTest
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Табличная переменная в виде параметра
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]