Использование переменной в Dynamic Query в SQL Server

Что я пытаюсь сделать из этого запроса, так это получить все строки, которые старше указанного Cutoffnumber из таблицы customertransaction:

@Cutoffnumber INT

SELECT @SQL = 'SELECT * FROM customertransaction WHERE DATEDIFF(DD, Transactiondate, GETDATE()) > @Cutoffnumber '

Но я получаю следующую ошибку. Обратите внимание, что это динамический SQL-запрос.

Необходимо объявить скалярную переменную "@Cutoffnumber"

Как мне поступить.


person Sree    schedule 13.03.2012    source источник


Ответы (2)


Посмотрите sp_executesql.

person Joel Coehoorn    schedule 13.03.2012

Decalre @Cutoffnumber INT    
Set @Cutoffnumber = @someValue
SELECT @SQL = 'SELECT * FROM customertransaction WHERE DATEDIFF(DD, Transactiondate, GETDATE()) >' + @Cutoffnumber 

Хотя кажется, что вы могли бы сделать это без динамического SQL:

Declare @Cutoffnumber INT    
Set @Cutoffnumber = @someValue
SELECT * FROM customertransaction WHERE DATEDIFF(DD, Transactiondate, GETDATE()) > @Cutoffnumber 
person Colin    schedule 13.03.2012
comment
Ценю ваши усилия, но это не то, что я собирался сделать. - person Sree; 13.03.2012