Member 8092498 Ответов: 2

Как использовать динамическое имя таблицы в функции SQL


Привет,

У меня есть процедура хранения sql, чем runnig параллельно.
Процесс записи во временную таблицу, содержащую идентификатор сеанса в последней
так что каждый процесс имеет свою собственную временную таблицу.

пример
##temp_table + CONVERT(varchar(10),(select @@SPID)) 

Таблицы, которые создали

##temp_table_121
##temp_table_122


Проблема

Мне нужно выбрать данные из этих таблиц в функции.
Но в функции я не могу использовать динамический sql.

Как я могу использовать эти таблицы в функции?

Что я уже пробовал:

Использование динамического sql в функции-I gen ошибка

Herman<T>.Instance

Добавьте скобки [] вокруг него, как:
[##temp_table_121]
[##temp_table_122]

Member 8092498

Я не знаю названия столов.
Я возвращаю его с помощью # # temp_table + CONVERT(varchar(10), (select @@SPID))
так что это динамично

PeejayAdams

Это просто невозможно сделать в ОДФ. Вы можете попробовать использовать функцию CLR.

Member 8092498

Что такое функция CLR?

Karthik_Mahalingam

УДФ ?

2 Ответов

Рейтинг:
1

David_Wimbley

Исходя из того, что я думаю, вы пытаетесь сделать, вам нужно использовать exec sp_executesql. Вот вам пример.

IF OBJECT_ID('tempdb..#MyTempTable') IS NOT NULL DROP TABLE #MyTempTable
		CREATE TABLE #MyTempTable
		(
			Id INT NULL
		)

DECLARE @TableName VARCHAR(200) = '#MyTempTable';

DECLARE @Sql NVARCHAR(500) = 'SELECT * FROM ' + @TableName;


EXEC sp_executesql @Sql


Member 8092498

Я не могу использовать sp_executesql в функции sql..

Рейтинг:
0

Member 8092498

Мое решение:
Я создал тип таблицы SQL.
В процедуре store, чем запустить функцию, я объявил объект этого типа, вставил данные временной таблицы в этот объект и передал его функции.