2017-08-14 52 views
1

我似乎無法使此腳本正常工作。我收到以下錯誤:SQL Server用戶定義表類型和BCP導出

Msg 137, Level 16, State 1, Line 14 Must declare the scalar variable "@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]'[email protected]_GLICU+'" QUERYOUT "D:\D365O\DataSource\F0911\'[email protected]+'.csv" -c -t\^, -T -S' + @@SERVERNAME + '' 
EXECUTE MASTER..xp_cmdshell @cmd 

回答

0

你不能指從BCP那是query參數的範圍之外創建一個表變量。當BCP執行時,它會創建一個新的會話,並且表變量的範圍僅限於創建表變量的會話。

0

問題是,你是串聯字符串,並試圖以附加表值類型:

SET @cmd = 'BCP "EXECUTE [F0902].[D365O].[Get-F0911NewRecords]'[email protected]_GLICU+'" QUERYOUT "D:\D365O\DataSource\F0911\'[email protected]+'.csv" -c -t\^, -T -S' + @@SERVERNAME + '' 

能代替你在數據庫中創建一個臨時表和BCP查詢中使用它的名字嗎?

相關問題