Проблема в названии поля
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        


12»»

Проблема в названии поля Expand / Collapse
Автор
Сообщение
23.10.2006 12:27


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme 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

В чем я не прав?
Сообщ. #906250
23.10.2006 12:33
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Попробуй использовать sp_executesql вместо exec
Сообщ. #906254
23.10.2006 12:50


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme 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

но не получается.
Сообщ. #906257
23.10.2006 13:05
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
SET @strSQL = '....'
exec sp_executesql @strSQL
Сообщ. #906260
23.10.2006 13:12


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme 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'.
Сообщ. #906263
23.10.2006 13:14


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833, Visits: 16 863
Vodizzz, бегом на гугл.

Тебе ошибка полностью описана! Что тебе еще надо?

Или ты по поводу каждой запятой флеймить будешь?

Сообщ. #906265
23.10.2006 13:19
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Измени тип переменной @strSQL на nvarchar и учись самостоятельно решать такие простые проблемы.
Сообщ. #906266
23.10.2006 13:24


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme 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
:)
Сообщ. #906267