2015-02-05 3 views
0

У меня есть следующий код, который компилируется и запускается с результатами в средстве просмотра в SQL Server, но выходной файл не генерируется. Я знаю, что BCP работает на моем сервере с простыми операторами SQL, но я не могу заставить его создать файл с этим оператором SQL. Кто-нибудь знает, почему это не работает для меня? Я постоянно получаю список использования и параметров, но нет выходного отчета или выходного файла.SQL Server: BCP не выводит текстовый файл, но работает

BEGIN 
    SET NOCOUNT ON; 

EXEC xp_cmdshell 'bcp 'select '"' + CONVERT(varchar,fo.orderno) + '"' as [STOP_ID], 
    CASE WHEN (isnull(i.pickuptime,'') <> '') THEN convert(datetime,i.pickuptime,126) ELSE convert(datetime,fo.pickeduptime,126) END as [PICKUP_TIME], 
    CASE WHEN (isnull(i.deliveredtime,'') <> '') THEN convert(datetime,i.deliveredtime,126) ELSE convert(datetime,fo.deliveredtime,126) END as [DELIVERY_TIME], 
    CASE WHEN (isnull(i.pickupcontact,'') <> '') THEN '"' + i.pickupcontact + '"' ELSE '"' + og.marketsitenumber + '"' END as [SENDER_CODE], 
    CASE WHEN (isnull(i.pickupcompany,'') <> '') THEN '"' + i.pickupcompany + '"' ELSE '"' + fo.pickupcompanyname + '"' END as [SENDER_NAME], 
    '"' + (CONVERT(varchar, fo.PickupstreetNo) + ' ' + fo.PickupStreet + ' ' + fo.PickupUnit) + '"' as [SENDER_STREET], 
    '"' + fo.pickupcity + '"' as [SENDER_CITY], 
    '"' + fo.pickupprovince + '"' as [SENDER_STATE], 
    '"' + fo.pickuppostalcode + '"' as [SENDER_POSTAL_CODE], 
    '"US"' as [SENDER_COUNTRY], 
    CASE WHEN (isnull(i.driver,'') <> '') THEN '"' + i.driver + '"' ELSE '"' + CONVERT(varchar,fo.pickupdriver) + '"' END as [DRIVER_ID], 
    CASE WHEN (isnull(i.deliveryfacilitycode,'') <> '') THEN '"' + i.deliveryfacilitycode + '"' ELSE '""' END as [RECIPIENT_CODE], --Issue for left-joined "FO Only" records: No safety net. 
    CASE WHEN (isnull(i.deliverycompanyname,'') <> '') THEN '"' + i.deliverycompanyname + '"' ELSE '"' + fo.deliverycompanyname + '"' END as [RECIPIENT_NAME], 
    '"' + (CONVERT(varchar, fo.deliverystreetNo) + ' ' + fo.DeliveryStreet + ' ' + fo.DeliveryUnit) + '"' as [RECIPIENT_STREET], 
    '"' + fo.deliverycity + '"' as [RECIPIENT_CITY], 
    '"' + fo.deliveryprovince + '"' as [RECIPIENT_STATE], 
    '"' + fo.deliverypostalcode + '"' as [RECIPIENT_POSTAL_CODE], 
    '"US"' as [RECIPIENT_COUNTRY_CODE], 
    CASE WHEN (og.accounttype = 'stat' and st.servicetypeid in ('324','154','156','122','303','290')) THEN '"STAT"' 
     WHEN ((og.accounttype = 'stat' and st.servicetypeid in ('186','304','305')) or (og.accounttype = 'scheduled' and fo.[route] in ('B1','B2','B3','B4'))) THEN '"MULTI-STAT"' 
     WHEN (fo.route not like 'LH%' and og.accounttype = 'scheduled' and st.servicetypeid not in ('329') and fo.[route] not in ('B1','B2','B3','B4')) THEN '"ROUTE"' 
     WHEN ((og.accounttype = 'scheduled' and st.servicetypeid in ('329')) or (og.accounttype = 'stat' and st.servicetypeid in ('372','373','374','377','386','329','356','387','388','389','390','391','392'))) THEN '"SWEEP"' 
     WHEN (og.accounttype = 'scheduled' and fo.route like 'LH%') THEN '"LINE-HAUL"' 
     ELSE '"PLEASE CONTACT PDI IT WITH THIS STOP_ID"' END as [DELIVERY_TYPE], 
    CASE WHEN (fo.route not like 'LH%' and og.accounttype = 'scheduled' and st.servicetypeid not in ('329') and fo.[route] not in ('B1','B2','B3','B4')) THEN '"' + fo.reference + '"' ELSE '""' END as [ROUTE_REFERENCE], 
    CASE WHEN (fo.route not like 'LH%' and og.accounttype = 'scheduled' and st.servicetypeid not in ('329') and fo.[route] not in ('B1','B2','B3','B4')) THEN '"0"' ELSE '"' + convert(varchar,fo.distance) + '"' END as [MILEAGE], 
    CASE WHEN ((og.accounttype = 'scheduled') or (og.accounttype = 'stat' and fo.servicetypeid in (329))) THEN '"' + convert(varchar,fo.waitingtimedriver1) + '"' ELSE '"0"' END as [WAIT_TIME], 
    '""' as [WAIT_START_TIME], --"The time the courier began waiting after the grace period." Not currently captured anywhere in system. 
    CASE WHEN (((og.accounttype = 'scheduled') or (og.accounttype = 'stat' and fo.servicetypeid in (329))) and fo.waitingtimedriver1 > 0) THEN '"' + fo.reference + '"' ELSE '""' END as [WAIT_TIME_ROUTE_REFERENCE], 
    '""' as [ARRIVAL_TIME], --"The time the courier arrived at the Pharmacy to pick up the shipment. REQUIRED in the case of wait time." Not currently captured anywhere in system. 
    '""' as [DEPARTURE_TIME], ----"The time the courier departed from the Pharmacy with the shipment. REQUIRED in the case of wait time." Not currently captured anywhere in system. 
    '"USD"' as [CURRENCY], 
    '"0"' as [FUEL_SURCHARGE], 
    '"0"' as [TAX], 
    '"0"' as [HOSPICE_CHARGE], 
    '"0"' as [MISC_CHARGE], 
    '"' + convert(varchar,fo.totalamount) + '"' as [TOTAL_CHARGE] 
    from CC.dbo.finalizedorders fo 
inner join servicetypes st on fo.servicetypeid = st.servicetypeid 
inner join aropentransactions at on fo.invoicenumber = at.transactionnumber 
inner join OBR_Generator og on og.AccountNumber = fo.AccountNumber 
LEFT JOIN OrderSearchView osv ON fo.OrderNo = osv.[Order No] 
    LEFT JOIN [IRIS\SQLEXPRESS].IDSImport.dbo.IDSData i ON osv.[Cust. Field 2] = i.TripID 
where og.Market = 'Columbus' 
and at.transactiondate = '20150124' 
and fo.totalamount > 0 
and og.accounttype <> 'invoice'' queryout "C:\bcptest.txt" -T -c -t,' 

END 

ответ

2

Запрос слишком длинный. Я думаю, что вы ограничены до 4000 символов. Я делаю ваш 4753. Попробуйте создать представление, а затем сделайте select * из представления.

+0

Я попробую это и дам вам знать, спасибо! – Jason

+0

Я только что понял, что мне в конечном итоге необходимо передать переменные для Market and Transaction Date. Я не уверен, могу ли я использовать представление? Также он уже находится в хранимой процедуре. – Jason

+0

Попробуйте стол udf? –

Смежные вопросы