我似乎不能让这个剧本起作用。我得到了以下错误:
Msg 137、级别16、状态1、第14行必须声明标量变量"@TVP_GLICU“。
有人能告诉我我错过了什么吗?
Declare @TVP_GLICU TVP_GLICU
DECLARE @cmd varchar(500)
Declare @TimeStamp as nvarchar(100) = Replace((CONVERT(varchar(25), getdate(), 121)),':','')
--Insert Batch numbers in user defined table types
Insert Into @TVP_GLICU (ID)
Values ('563704')
Insert Into @TVP_GLICU (ID)
Values ('498721')
--select *
--From @TVP_GLICU
SET @cmd = 'BCP "EXECUTE [F0902].[D365O].[Get-F0911NewRecords]'+@TVP_GLICU+'" QUERYOUT "D:\D365O\DataSource\F0911\'+@TimeStamp+'.csv" -c -t\^, -T -S' + @@SERVERNAME + ''
EXECUTE MASTER..xp_cmdshell @cmd发布于 2017-08-14 17:30:16
您不能引用在query参数范围之外创建的BCP中的表变量。执行BCP时,它会创建一个新会话,表变量的作用域仅限于创建表变量的会话。
发布于 2017-08-14 17:31:13
问题是,您正在连接字符串并试图附加表值类型:
SET @cmd = 'BCP "EXECUTE [F0902].[D365O].[Get-F0911NewRecords]'+@TVP_GLICU+'" QUERYOUT "D:\D365O\DataSource\F0911\'+@TimeStamp+'.csv" -c -t\^, -T -S' + @@SERVERNAME + ''您可以在数据库中创建一个暂存表并在BCP查询中使用它的名称吗?
https://stackoverflow.com/questions/45679651
复制相似问题