|
|
|
Supreme Being
      
участник
Last Login: 27.06.2008 14:10
Сообщ.: 275,
Visits: 865
|
|
Здравствуйте!
Такой вопрос:
Есть строка
SELECT @Turn=Sum(A10_Turn) FROM tbl WHERE [Date]<=getdate() and [Date]>=DateADD(dd,-10,getdate())
а проблема в поле. Заранее не известно, что оно называется так, поэтому я эту строку переписал так:
SET strSQL='SELECT @Turn=Sum(A'+Num+'_Turn) FROM tbl WHERE [Date]<=getdate() and [Date]>=DateADD(dd,-10,getdate())'
exec(@sqlstr)
Но при такой записи @Turn=NULL
В чем я не прав?
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Попробуй использовать sp_executesql вместо exec
|
|
|
|
|
Supreme Being
      
участник
Last Login: 27.06.2008 14:10
Сообщ.: 275,
Visits: 865
|
|
Если я правильно понимаю, то это делается так
DECLARE @Turn decimal(18,2)
SET strSQL='SELECT @Turn=Sum(A'+Num+'_Turn) FROM tbl WHERE [Date]<=getdate() and [Date]>=DateADD(dd,-10,getdate())'
exec sp_executesql @sqlstr, N'@Turn decimal(18,2) out', @Turn=@Turn out
select @Turn
но не получается.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
SET @strSQL = '....' exec sp_executesql @strSQL
|
|
|
|
|
Supreme Being
      
участник
Last Login: 27.06.2008 14:10
Сообщ.: 275,
Visits: 865
|
|
bazile (23.10.2006) SET @strSQL = '....'
exec sp_executesql @strSQL
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833,
Visits: 16 863
|
|
| Vodizzz, бегом на гугл. Тебе ошибка полностью описана! Что тебе еще надо? Или ты по поводу каждой запятой флеймить будешь?
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Измени тип переменной @strSQL на nvarchar и учись самостоятельно решать такие простые проблемы.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 27.06.2008 14:10
Сообщ.: 275,
Visits: 865
|
|
Спасибо. Просто примеров видел много, но не обратил внимание на то, что тип должен быть с буквой n
Да! и еxec sp_executesql @strSQL не работает.
надо писать exec sp_executesql @sqlstr, N'@Turn decimal(18,2) out', @Turn=@Turn out
:)
|
|
|
| | |