Указание имени столбца в качестве параметра в операторе SELECT? - PullRequest
0 голосов
/ 18 ноября 2011

Мне нужно сделать что-то подобное, но всегда происходит ошибка «Преобразование типа данных varchar в int»:

DECLARE @intParam INT
DECLARE @ColName VARCHAR(64)

SET @ColName='intcolumn'

SET @intParam = SELECT @ColName FROM myTable

Как мне выполнить что-то подобное?Я вижу проблему в том, что оператор SELECT просто возвращает имя столбца в виде строки, но я не уверен, как это исправить.Я использую SQL Server 2008R2.

Ответы [ 2 ]

6 голосов
/ 18 ноября 2011

Вам необходимо использовать динамический sql:

  • для построения динамического SQL-запроса (посмотрите на переменную @SQL в примере ниже)
  • используйте выходной параметр, чтобы получить значение издинамический sql (посмотрите на @intParam и @intParam_out в приведенном ниже примере)
  • выполнить динамический sql, используя sp_executesql
DECLARE @intParam INT
DECLARE @ColName VARCHAR(64)

SET @ColName='intcolumn'

DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT @intParam_out = ' + @ColName + ' FROM myTable'
exec sp_executesql @SQL, N'@intParam_out int OUTPUT', @intParam_out = @intParam OUTPUT
0 голосов
/ 18 ноября 2011

Использование В ролях :

SET @intParam = SELECT cast(@ColName as int) FROM myTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...