UTL_FILE Генерация пустого файла

У меня есть требование для создания файлов.txt по определенному пути, я попытался в 11i экземпляре, он работал нормально. но проблема в том, когда я пытаюсь добавить больше столбцов (только 80 столбцов), генерирующих только пустой файл. когда я удаляю некоторые столбцы снова, он работал нормально.

Я попытался в экземпляре R12 там работать нормально и генерировать более 120 столбцов в одну строку. тот же код не работает в экземпляре 11i, требуется ли какая-либо настройка со стороны администратора базы данных или какие-либо ограничения в экземпляре 11i. Может ли кто-нибудь, пожалуйста, помогите в этом.

2 ответа

PROCEDURE xxx_test (    RETCODE IN VARCHAR2,    ERRBUFF IN VARCHAR2) IS
FILENAME  UTL_FILE.FILE_TYPE;
v_file_name varchar2(250);
v_count NUMBER;
CURSOR C1 IS
SELECT  *
FROM
GRC.GR_PO_EDI_TEMP_ARCHIVE GPET
,OE_ORDER_HEADERS_ALL       OOHA
,OE_ORDER_LINES_ALL         OOLA
WHERE GPET.ORDERNUMBER              = OOHA.CUST_PO_NUMBER
AND   OOHA.HEADER_ID                = OOLA.HEADER_ID
AND   OOHA.ORG_ID                   = OOLA.ORG_ID
AND     nvl(GPET.PO_ACK_STATUS,'N') <> 'Y'  ;
i C1%ROWTYPE;   
BEGIN
BEGIN
SELECT 'orders_1.1_'||to_char(sysdate,'yyyymmddHH24MMSS')||'.txt' INTO v_file_name FROM dual;
exception
WHEN others THEN
v_file_name := NULL;
RAISE_APPLICATION_ERROR(-20201,'File Name Generation failed.!!');
END;
FILENAME:= UTL_FILE.FOPEN('/home/outbox',v_file_name,'w',32767);
/* THIS WILL CREATE THE HEADING IN the FILE */
UTL_FILE.PUT_LINE(FILENAME,
'orderNumber' ||'    '||
'orderDate' ||'    '||
'orderType' ||'    '||
'currency' ||'    '||
'paymentTerm' ||'    '||
'paymentTermText' ||'    '||
'customer' ||'    '||
'supplier' ||'    '||
'shipToSite' ||'    '||
'shipFromSite' ||'    '||
'freightTerm' ||'    '||
'freightTermMeaning' ||'    '||
'freightCarrier' ||'    '||
'buyerNotesHeader' ||'    '||
'supplierNotesHeader' ||'    '||
'buyerName' ||'    '||
'buyerEmail' ||'    '||
'buyerContact' ||'    '||
'lineNumber' ||'    '||
'item' ||'    '||
'itemDescriptionFreeForm' ||'    '||
'UOM' ||'    '||
'price' ||'    '||
'quantity' ||'    '||
'reqDeliveryDate' ||'    '||
'supplierSuggestedPrice' ||'    '||
'buyerNotesLines' ||'    '||
'supplierNotesLines' ||'    '||
'lineShippedQuantity' ||'    '||
'lineReceivedQuantity' ||'    '||
'lineBilledQuantity' ||'    '||
'scheduleNum' ||'    '||
'scheduleQuantity' ||'    '||
'scheduleDeliveryDate' ||'    '||
'promisedDeliveryDate' ||'    '||
'quantityPromised' ||'    '||
'buyerNotesSchedule' ||'    '||
'supplierNotesSchdule' ||'    '||
'quantityReceived' ||'    '||
'quantityShipped' ||'    '||
'Action' ||'    '||
'Id' ||'    '||
'shipToSiteName' ||'    '||
'shipToSiteaddress1' ||'    '||
'shipToSiteaddress2' ||'    '||
'shipToSitecity' ||'    '||
'shipToSitestate' ||'    '||
'shipToSitepostalcode' ||'    '||
'shipToSitecountry' ||'    '||
'totallines' ||'    '||
'orderlinesquantitysum' ||'    '||
'scheduleStatus' ||'    '||
'erpHeaderId' ||'    '||
'erpLineId' ||'    '||
'erpScheduleId' ||'    '||
'billToSiteName' ||'    '||
'billToSiteaddress1' ||'    '||
'billToSiteaddress2' ||'    '||                         
'billToSitecity' ||'    '||
'billToSitestate' ||'    '||
'billToSitepostalcode' ||'    '||
'billToSitecountry' ||'    '||
'supplieritemnumber' ||'    '||
'manufacturer' ||'    '||
'flexField1' ||'    '||
'flexField2' ||'    '||
'flexField3' ||'    '||
'flexField4' ||'    '||
'flexField5' ||'    '||
'flexField6' ||'    '||
'flexField7' ||'    '||
'flexField8' ||'    '||
'flexField9' ||'    '||
'flexField10' ||'    '||
'SupplierName' ||'    '||
'LineValue' ||'    '||
'OrderValue' ||'    '||
'customererpitemid' ||'    '||
'suppliererpitemid' ||'    '||
'salesOrder' ||'    '
);
OPEN c1;
loop
fetch c1 INTO i;
exit WHEN c1%notfound;

UTL_FILE.PUT_LINE(FILENAME,
i.ordernumber||'    '||
i.orderdate||'    '||
i.ordertype||'    '||
i.currency||'    '||
i.paymentterm||'    '||
i.paymenttermtext||'    '||
i.customer||'    '||
i.supplier||'    '||
i.shiptosite||'    '||
i.shipfromsite||'    '||
i.freightterm||'    '||
i.freighttermmeaning||'    '||
i.freightcarrier||'    '||
i.buyernotesheader||'    '||
i.suppliernotesheader||'    '||
i.buyername||'    '||
i.buyeremail||'    '||
i.buyercontact||'    '||
i.linenumber||'    '||
i.item||'    '||
i.itemdescriptionfreeform||'    '||
i.uom||'    '||
i.price||'    '||
i.quantity||'    '||
i.reqdeliverydate||'    '||
i.suppliersuggestedprice||'    '||
i.buyernoteslines||'    '||
i.suppliernoteslines||'    '||
i.lineshippedquantity||'    '||
i.linereceivedquantity||'    '||
i.linebilledquantity||'    '||
i.schedulenum||'    '||
i.schedulequantity||'    '||
i.scheduledeliverydate||'    '||
i.promiseddeliverydate||'    '||
i.quantitypromised||'    '||
i.buyernotesschedules||'    '||
i.suppliernotesschdules||'    '||
i.quantityreceived||'    '||
i.quantityshipped||'    '||
i.action||'    '||
i.id||'    '||
i.shiptositename||'    '||
i.shiptositeaddress1||'    '||
i.shiptositeaddress2||'    '||
i.shiptositecity||'    '||
i.shiptositestate||'    '||
i.shiptositepostalcode||'    '||
i.shiptositecountry||'    '||
i.totallines||'    '||
i.orderlinesquantitysum||'    '||
i.schedulestatus||'    '||
i.erpheaderid||'    '||
i.erplineid||'    '||
i.erpscheduleid||'    '||
i.billtositename||'    '||
i.billtositeaddress1||'    '||
i.billtositeaddress2||'    '||
i.billtositecity||'    '||
i.billtositestate||'    '||
i.billtositepostalcode||'    '||
i.billtositecountry||'    '||
i.supplieritemnumber||'    '||
i.manufacturer||'    '||
i.flexfield1||'    '||
i.flexfield2||'    '||
i.flexfield3||'    '||
i.flexfield4||'    '||
i.flexfield5||'    '||
i.flexfield6||'    '||
i.flexfield7||'    '||
i.flexfield8||'    '||
i.flexfield9||'    '||
i.flexfield10||'    '||
i.suppliername||'    '||
i.linevalue||'    '||
i.ordervalue||'    '||
i.customererpitemid||'    '||
i.suppliererpitemid||'    '||
i.salesordernumber||'    '
);
END LOOP;   
UTL_FILE.FCLOSE(FILENAME);
fnd_file.put_line(fnd_file.output,'File created & File Name:  '||v_file_name      );
dbms_output.put_line(v_file_name||' '||'file created '||'for Order Number:   '||i.ordernumber);
exception  
WHEN UTL_FILE.INVALID_PATH THEN
null;
END xxx_test;

У меня была такая же проблема.

Оказалось, что это проблема размера файла, меньше 70 КБ, и файл будет скопирован нормально, но 70 КБ или более, и в итоге он будет равен 0 байтам.

Это была не оракульная ошибка, а способ подключения общих дисков.

Если вы можете попробовать fcopy на локальный диск, вы должны убедиться, что он работает нормально.

Получите тот, кто отвечает за монтирование общих дисков, чтобы решить проблему.

Другие вопросы по тегам