Вопрос по хранимой процедуре: как бы извратиться ...

Есть хранимая процедура, в ней такое присвоение переменной:
declare @cur_id int
set @cur_id = min(Id_Field) from MyTable
Здесь MyTable и Id_Field явные названия таблицы и поля в ней. Все ОК, работает.Вопрос, а можно ли в пределах ОДНОЙ хранимой процедуры в эту строку динамически поставлять названия Id_Field и MyTable из заранее заданных переменных:
declare @Id_Field
declare @MyTable
Т.е. можно ли решить такую задачу без использования второй (вспомогательной) хранимой процедуры или временной таблицы?
3 ответа

sp_executesql подойдет?


Можно с помощью динамического запроса:
CREATE PROCEDURE MyProc
 @Id_Field sysname,
 @MyTable sysname
AS
 DECLARE @SQL nvarchar(<b>1024</b>),
 @Cur_ID int

 SET @SQL = 'SELECT @Cur_ID = MIN('+@Id_Field+')
 FROM '+ @MyTable

 EXEC sp_ExecuteSQL
 @stmt = @SQL,
 @Params = N'@Cur_ID int OUTPUT',
 @Cur_ID = @Cur_ID OUTPUT


Спасибо, ребята, то, что нужно.