У меня запущена хранимая процедура, которая ищет имя ID в таблице переменных (v) как сводку других таблиц базы данных (a, b, c et c.). Поскольку не все таблицы имеют идентификатор с именем ID, я сохранил их в этой таблице переменных.
Это должно использоваться для получения максимального идентификатора из соответствующей таблицы.
При выполнении следующей команды все хорошо, и я получаю максимальный идентификатор для соответствующей таблицы:
DECLARE @TableMaxID INT
SELECT @TableMaxID = ISNULL(MAX(TableID_a),0)
FROM DB.SCHEMA.Table_a
PRINT @TableMaxID
Запустив этот запрос, я правильно получаю таблицу формы максимального идентификатора a - '59'
Поскольку я хочу использовать переменную в этой команде я попробовал следующее
DECLARE @TableMaxID INT
,@TableIdName NVARCHAR (50)
SET @TableIdName = 'TableID_a'
SELECT TableMaxID = ISNULL(MAX(@TableIdName),0)
FROM DB.SCHEMA.Table_a
Выполнение этого вызывает ошибку
Преобразование не удалось при преобразовании значения nvarchar 'TableID_a' в тип данных int.
Когда я использую только команду SELECT
, я понимаю, что происходит, - вместо имени цифры c '59'
DECLARE @TableMaxID INT
,@TableIdName NVARCHAR (50)
SET @TableIdName = 'TableID_a'
SELECT ISNULL(MAX(@TableIdName),0)
FROM DB.SCHEMA.Table_a
PRINT @TableMaxID
* 1023 я получаю имя переменной
@TableIdName
* Возвращает имя переменной 'TableID_a'
Я немного запутался. Что я тут не так делаю. Есть ли способ использовать переменную, как я пытаюсь или я получаю что-то совершенно неправильно.