У меня есть следующий оператор SQL, который отлично работает:
DECLARE @TableName VARCHAR(250);
SET @TableName = 'TBL_Name'
SELECT QUOTENAME(@TableName) As TableName, HASHBYTES('SHA1', (SELECT * FROM TBL_Name FOR XML RAW)) As TableHash
Теперь я хочу иметь возможность передавать имя таблицы как переменную, чтобы я мог использовать это как функцию, поэтому я попробовал это:
DECLARE @TableName VARCHAR(250);
SET @TableName = 'TBL_Name'
EXEC('SELECT QUOTENAME(' + @TableName + ') As TableName, HASHBYTES(''SHA1'', (SELECT * FROM TBL_NameFOR XML RAW)) As TableHash');
Когда я запускаю это, я получаю следующую ошибку:
Invalid column name 'TBL_Name'.
Если я удаляю имя столбца и изменяю его на это, оно работает:
DECLARE @TableName VARCHAR(250);
SET @TableName = 'TBL_Name'
EXEC('SELECT HASHBYTES(''SHA1'', (SELECT * FROM ' + @TableName + ' FOR XML RAW)) As TableHash');
МОЙ вопрос, как мне получить запрос на вывод имени таблицы в виде столбца?