【发布时间】:2013-04-01 03:23:09
【问题描述】:
我正在运行一些动态 SQL,当我手动写入变量时它运行良好,但是一旦我将它们从手动写入的变量更改为实际变量,我就会收到上面的错误.
代码是:
set @query = 'SELECT eng, ' + @colsNull + '
from
(
select eng, [count], cast(weekof as date) weekof
from dbo.RPT_ENG_WEEK (''1 jan 2013'', ''9 apr 2013'', ''1 jan 2013'', ''9 apr 2013'')
) x
pivot
(
sum([count])
for weekof in (' + @cols + ')
) p '
效果很好,但是一旦我将其更改为
set @query = 'SELECT eng, ' + @colsNull + '
from
(
select eng, [count], cast(weekof as date) weekof
from dbo.RPT_ENG_WEEK ('+@from+', '+@to+', '+@start+', '+@end+')
) x
pivot
(
sum([count])
for weekof in (' + @cols + ')
) p '
我得到了错误。我也试过了
set @query = 'SELECT eng, ' + @colsNull + '
from
(
select eng, [count], cast(weekof as date) weekof
from dbo.RPT_ENG_WEEK ((select CONVERT(DATE'+@from+',105)), (select CONVERT(DATE'+@to+',105)), (select CONVERT(DATE'+@start+',105)), (select CONVERT(DATE'+@end+',105)))
) x
pivot
(
sum([count])
for weekof in (' + @cols + ')
) p '
但无济于事!
也试过了
from dbo.RPT_ENG_WEEK ((select CONVERT(DATE'''+@from+''',105)), (select CONVERT(DATE'''+@to+''',105)), (select CONVERT(DATE'''+@start+''',105)), (select CONVERT(DATE'''+@end+''',105)))
和
from dbo.RPT_ENG_WEEK ('''+@from+''', '''+@to+''', '''+@start+''', '''+@end+''')
【问题讨论】:
-
我认为这里的单引号不够
from dbo.RPT_ENG_WEEK ('+@from+', '+@to+', '+@start+', '+@end+')。 -
@Dommer 这不正是我放在中间代码块中的吗?
-
我现在也尝试过 dbo.RPT_ENG_WEEK ('''+@from+''', '''+@to+''', '''+@start+''', ' ''+@end+''') 但没有快乐!
-
是的,我是说那位错了。我已经发布了一个应该有帮助的答案(我希望):-)
-
您传入的日期格式是什么?是
1 jan 2013吗?
标签: sql sql-server-2008 dynamic