2016-09-13 24 views
1

我有一個包含SQL語句的.BAT文件。而我不瞭解如何將其轉換爲存儲過程。將SQL cmd語句轉換爲存儲過程

這是結:

ECHO 2, MDCESS_TRAKG_NUM, 1 , 2, dropoff, 3, 4, ORDER_NUM, MERCHANT_ORDER_NUM, MASTER_BARCODE, BARCODE, SERIAL_NUM, 5, NET_WEIGHT, GROSS_WEIGHT, DIM_WEIGHT, DRIVER, TRAILER, DELIVERY_DATE >\\c:\\Manifest.txt 

SQLCMD -S SQLSERVEREXPRESS -d MyDb -U sa -P triple -Q "SET NOCOUNT ON select 2 AS '2', ORDE_.billgrp AS ENSENDA_TRAKG_NUM, 1 AS '1', 2 AS '2', dropoff AS dropoff, 3 AS '3', 4 AS '4', orde_.ordernum AS ORDER_NUM, CASE WHEN (Left(daddr,11)='1955 VAUGHN' AND READYDATE=CONVERT(varchar(8),GETDATE(),112)) THEN 'TBLK_ATL_'+ DRV1NUM + '_' + REPLACE(CONVERT(varchar(8),GETDATE(),10) ,'-', '') ELSE left(orde_.ref, 18) END AS MERCHANGE_ORDER_NUM, GFIELD4 AS MASTER_BARCODE, CASE WHEN orde_.CLIENTNUM in ('CDSLOG45', 'NEWAGE20', 'ENATLPEL') THEN orde_.BILLGRP ELSE GFIELD2 END AS BARCODE, left(GFIELD3,30) AS SERIAL_NUM, 5 AS '5', isnull(INVNUM,0) AS NET_WEIGHT,isnull(INVNUM,0) AS GROSS_WEIGHT,isnull(INVNUM,0) AS DIM_WEIGHT, orde_.DRV1NUM AS DRIVER, orde_.CALLER AS TRAILER, CONVERT(VARCHAR(10), orde_.READYDATE, 120) AS DELIVERY_DATE FROM GENERICFIELDS FULL OUTER JOIN ORDE_ ON GENERICFIELDS.ORDERID=ORDE_.ORDERID FULL OUTER JOIN CLIENT ON ORDE_.CLIENTID=CLIENT.CLIENTID WHERE orde_.droptime is null and (GFIELD2 is not null or orde_.CLIENTNUM in ('CDSLOG45', 'NEWAGE20', 'ENATLPEL')) and ORDE_.CANCELLED='0' and dispid in ('65')" -h-1 -b -o "\\ADV\SCANNERMANIFEST.TXT" -s "," -W 

copy \\intro\Atlanta5\*.txt \\intro\My.txt /y /b 

del \\intro\My.csv 

ren \\intro\My.txt My.csv 

能否請你告訴我,我怎麼可以將它轉換爲一個存儲過程?

回答

1

您可以使用xp_cmdshell的執行全部複製,刪除和執行SQL查詢

EXEC xp_cmdshell 'copy \\intro\Atlanta5\*.txt \\intro\My.txt /y /b'; 

複製從SQL Server中的數據後,重命名,你可以嘗試BCP出實用象下面這樣:

bcp "SELECT * from table " queryout D:\BCP\output.txt -t, -c -T,-S SQLSERVER-d MyDb -U sa -P triple 
+0

感謝您的重播。我與SQLCMD行有關的問題如何在sp –

+0

中重寫該行?爲什麼在SQL sproc中需要sqlcmd?你可以直接在sproc儀式中使用SQL命令嗎?我在這裏瞭解不同嗎? –

+0

Kandasamy實際上我想將值寫入從我的select語句返回的文本文件。我需要從商店程序 –