Вы можете динамически сохранять состояние с помощью некоторого ключа, данного каждому дочернему элементу, и получать доступ к каждому состоянию с помощью ключа, который вы ему даете.
Повторно отредактируйте - похоже, вы должны использовать sp_ExecuteSQL против (параметризованного) nvarchar
, содержащего TSQL.
Поиск по sp_ExecuteSQL; простой пример:
DECLARE @SQL nvarchar(4000),
@Table varchar(20) = 'ORDERS',
@IDColumn varchar(20) = 'OrderID',
@ID int = 10248
SET @SQL = 'SELECT * FROM [' + @Table + '] WHERE ['
+ @IDColumn + '] = @Key'
EXEC sp_executesql @SQL, N'@Key int', @ID
Обратите внимание, что имена таблиц и столбцов должны быть объединены в запросе, но значения (такие как @Key
) могут быть параметризованы.
Существует временная хранимая процедура - но она для каждого соединения, а не для sp.
Однако вы можете захотеть взглянуть на Common Table Expressions - они могут быть тем, что вы ищете (хотя вы можете читать из них только один раз).
Возможно, если вы сможете уточнить, что Вы пытаетесь сделать ?
Просто используйте SQL хранимого процесса внутри вашего запроса. Не нужно создавать хранимую процедуру внутри БД, она не даст вам никакого преимущества перед обычным запросом внутри вашего запроса.