这是我在存储过程中的动态sql
BEGIN
SET NOCOUNT ON;
declare @SQL as varchar(4000)
set @SQL = 'CREATE VIEW vw_GCS_Export
As
select division, [primary image id],[Item Number], [Brand Name],[Marketing Description],
[Colours]as Colors,[Live Date],[Sample Type],substring([FileName],charindex('+ CHAR(39) + '_' + CHAR(39) +',[FileName],1)+1,CHARINDEX('+ CHAR(39) + '.' + CHAR(39) +',[FileName],1)-5) as BatchID,
'+ CHAR(39) + '670' + CHAR(39) +' as Status, [Primary image ID] + '+ CHAR(39) + '_P' + CHAR(39) +' as [Shot Name],
Cast(Null as varchar(50))as [Swatch/Variation],Cast(Null as varchar(50))as [Alternate Shot],[UserName],''' + CAST(convert(date,Sysdatetime(),110)as varchar(10)) + ''' as [Import Date],
Cast(Null as varchar(50))as [Return Instructions],Cast(Null as varchar(50))as [Rush Request], DATEADD(WEEKDAY,-5,[live date]) as [ImageDeliveryDate],
' + convert(varchar(50), ' + ' + CHAR(39) + 'Division ' + CHAR(39) +' + [Division] + '+ CHAR(39) + ' * ' + CHAR(39) +' + [UserName] ) as JobName
from Sheet1$'
EXEC @SQL
select * from vw_GCS_Export
END
我在执行时遇到错误
Incorrect syntax near the keyword 'EXEC'.
我不确定为什么。我在SQL语句中似乎没有任何错误。
答案 0 :(得分:5)
答案 1 :(得分:2)
您的实际问题在这里:
' + convert(varchar(50), '
你有CONVERT
没有第二个参数。您可能想要在动态SQL中包含CONVERT
,或者您想要包含此部分
' + [UserName] ) as JobName
作为CONVERT
的结尾,但在任何一种情况下,都不会编译,语法也会被破坏。
答案 2 :(得分:0)
以下是我最终的结果:
SET NOCOUNT ON;
declare @SQL as varchar(4000)
set @SQL = 'CREATE VIEW vw_GCS_Export
As
select division, [primary image id],[Item Number], [Brand Name],[Marketing Description],
[Colours]as Colors,[Live Date],[Sample Type],substring([FileName],charindex('+ CHAR(39) + '_' + CHAR(39) +',[FileName],1)+1,CHARINDEX('+ CHAR(39) + '.' + CHAR(39) +',[FileName],1)-5) as BatchID,
'+ CHAR(39) + '670' + CHAR(39) +' as Status, [Primary image ID] + '+ CHAR(39) + '_P' + CHAR(39) +' as [Shot Name],
Cast(Null as varchar(50))as [Swatch/Variation],Cast(Null as varchar(50))as [Alternate Shot],[UserName],''' + CAST(convert(date,Sysdatetime(),110)as varchar(10)) + ''' as [Import Date],
Cast(Null as varchar(50))as [Return Instructions],Cast(Null as varchar(50))as [Rush Request], DATEADD(WEEKDAY,-5,[live date]) as [ImageDeliveryDate],
' + CHAR(39) + 'Division ' + CHAR(39) +'+ cast([Division] as varchar(50)) + '+ CHAR(39) + ' * ' + CHAR(39) + ' + [UserName] as JobName
from Sheet1$'
EXEC (@SQL)
select * from vw_GCS_Export
关键是我不能在整个字符串上使用强制转换,我只能把它放在浮点字段[Division]上。我很感谢所有帮助FreshPrinceofSO