2014-02-20 27 views
0

我試圖使用BCP實用程序將數據與這些命令的輸出,但我在查詢得到一個錯誤......在SQL Server中的BCP實用工具的查詢語法使用VARCHAR

我宣佈諸多變數,我的問題是與查詢,因爲我必須使用varchar列進行篩選(CO_LINvarchar(6)),但如果我使用'來包裝變量的值@LINEAPRODUCTO我在SQL Server查詢工具中遇到錯誤,但是如果我不要使用任何東西它給我這個錯誤:

Invalid column name 'MEN'

MEN是字符串值我在變量聲明中設置)

DECLARE @PATH_ARC VARCHAR(200) 
DECLARE @USUARIO VARCHAR(20) 
DECLARE @PASSWORD VARCHAR(20) 
DECLARE @TABLA VARCHAR(40) 
DECLARE @SERVIDOR VARCHAR(100) 
DECLARE @ARCHIVOSALIDA VARCHAR(200) 
DECLARE @RUTAEJECUTAR VARCHAR(500) 
DECLARE @MES VARCHAR(2) 
DECLARE @DIA VARCHAR(2) 
DECLARE @ANNO VARCHAR(4) 
DECLARE @BASEDEDATOS VARCHAR(20) 
DECLARE @LINEAPRODUCTO VARCHAR(6) 
DECLARE @CONSULTA VARCHAR(300) 

SET NOCOUNT ON; 

-- Asignación de valores de las variables para la ejecución del stored procedure 
SET @TABLA ='dbo.art' 
SET @SERVIDOR = 'RJLD-LAPTOP\SQLEXPRESS' 
SET @USUARIO = 'exp' 
SET @PASSWORD = 'exp' 
SET @PATH_ARC = 'C:\PRUEBA\' 
SET @BASEDEDATOS = 'DEMO' 
SET @LINEAPRODUCTO = 'MEN' 

SET @MES = CAST(MONTH(GETDATE()) AS nchar(2)) 

IF LEN(RTRIM(LTRIM(@MES))) = 1 
BEGIN 
    SET @MES = '0' + RTRIM(LTRIM(@MES)) 
END 

SET @DIA = CAST(DAY(GETDATE()) AS nchar(2)) 

IF LEN(RTRIM(LTRIM(@DIA))) =1 
BEGIN 
    SET @DIA = '0' + RTRIM(LTRIM(@DIA)) 
END 

SET @ANNO = CAST(YEAR(GETDATE()) AS nchar(4)) 
SET @ARCHIVOSALIDA = 'RI_C58-L02_' + @ANNO + @MES + @DIA + '.txt' 
SET @PATH_ARC = '"' + @PATH_ARC + @ARCHIVOSALIDA + '"' 
SET @CONSULTA = '"select RTRIM(LTRIM(ITEM)),' + @ANNO + ',' + @MES + ',' + @DIA + ',CO_PROV from ' + @TABLA + ' WHERE CO_LIN=' + @LINEAPRODUCTO + '"' 

SET @RUTAEJECUTAR = 'bcp ' + @CONSULTA + ' queryout ' + @PATH_ARC + ' -S ' + @SERVIDOR + ' -U ' + @USUARIO + ' -P ' + @PASSWORD + ' -c -t "|" -d ' + @BASEDEDATOS 

-- select @RUTAEJECUTAR 
EXEC xp_cmdshell @RUTAEJECUTAR 

回答

0

我不熟悉的BCP實用工具,但我看到的情況是我看到的代碼格式的StackOverflow是使用同樣的事情。請注意PRUEBA之後的斜線如何導致以下撇號不被識別。我發現另一個問題here,有人不得不使用斜槓作爲轉義字符繞過BCP實用程序。

如果文件路徑斜槓被註冊爲轉義字符,然後將下面的代碼應該工作:

SET @PATH_ARC = 'C:\\PRUEBA\\' 
SET @BASEDEDATOS = 'DEMO' 
SET @LINEAPRODUCTO = 'MEN' 

注意,上面的代碼中,StackOverflow的格式是否正確讀取它。

希望這會有所幫助!

相關問題