我的程序是:
CREATE OR REPLACE PACKAGE BODY APPS.XXAE03103
IS PROCEDURE main(errbuf IN OUT VARCHAR2
,retcode IN OUT VARCHAR2
,in_occur_type IN VARCHAR2
,in_date IN DATE)
IS
--create or replace directory vDirname as 'C:\xpxpxpxp\';
CURSOR cur_file_loop IS
SELECT
XXAE_REPAY.TPP_CODE,
XXAE_REPAY.TPP_DIVIDE_CODE,
XXAE_REPAY.CONTR_CORP_CODE,
XXAE_CONTR_CORP.CONTR_CORP_NAME,
XXAE_REPAY.CONTR_FORM_TYPE,
XXAE_REPAY.CONTR_SUB_ID,
XXAE_REPAY.SCHEME_TYPE,
XXAE_REPAY.DOMESTIC_BRAND_CODE,
XXAE_REPAY.DOMESTIC_BRAND_CODE2,
XXAE_REPAY.INTER_BRAND_CODE,
XXAE_REPAY.CARD_NUM,
XXAE_REPAY.USER_KANA_NAME,
XXAE_REPAY.CLEARING_PROMISE_DATE,
XXAE_REPAY.REPAY_STATUS_TYPE,
XXAE_REPAY.REPAY_OPERATION_TYPE,
XXAE_REPAY.REPAY_AMT,
XXAE_REPAY.REPAY_DATE,
XXAE_REPAY.REPAY_OCCUR_TYPE,
XXAE_REPAY.CASH_SHIFT_TYPE,
XXAE_REPAY.INDIVIDUAL_PAYMENT_REGIST_DATE,
XXAE_REPAY.CASH_SHIFT_TO_DEPT_CODE,
XXAE_REPAY.BILL_TRUST_TYPE,
XXAE_REPAY.REPAY_TRUST_TYPE,
XXAE_REPAY.ISS_TPP_8_CODE,
XXAE_REPAY.CR_COOP_COLLECTION_DATE,
XXAE_REPAY.CR_COOP_PAYMENT_DATE
FROM XXAE_REPAY,XXAE_CONTR_CORP
WHERE XXAE_REPAY.REPAY_OCCUR_TYPE = in_occur_type AND
--trunc(XXAE_REPAY.REPAY_DATE) = to_date(in_date,'yyyy/mm/dd') AND
XXAE_REPAY.CONTR_CORP_CODE = XXAE_CONTR_CORP.CONTR_CORP_CODE
ORDER BY XXAE_REPAY.TPP_CODE;
vHandle UTL_FILE.FILE_TYPE;
vDirname VARCHAR2(250); --パス名
vFilename VARCHAR2(250); --ファイル名
-- vOutput VARCHAR2(32767);
lv_file_line VARCHAR(32767);
BEGIN
xxae_common_pkg.put_log_header();
vDirname :='C:\TEMP';
vFilename := 'WREN.txt'; vHandle := UTL_FILE.FOPEN(vDirname,vFilename,'w');
--dbms_output.put_line(in_occur_type||in_date);
dbms_output.put_line('!!!!!!!!!!!!!!!!!!!!!!!!!!!!23333333333333333333');
FOR rec_file IN cur_file_loop LOOP
dbms_output.put_line('!!!!!!!!!!!!!!!!!!!!!!!!!!!!23333333333333333333');
lv_file_line := rec_file.TPP_CODE || ','
|| rec_file.TPP_DIVIDE_CODE || ','
|| rec_file.CONTR_CORP_CODE || ','
|| rec_file.CONTR_CORP_NAME || ','
|| rec_file.CONTR_FORM_TYPE || ','
|| rec_file.CONTR_SUB_ID || ','
|| rec_file.SCHEME_TYPE || ','
|| rec_file.DOMESTIC_BRAND_CODE || ','
|| rec_file.DOMESTIC_BRAND_CODE2 || ','
|| rec_file.INTER_BRAND_CODE || ','
|| rec_file.CARD_NUM || ','
|| rec_file.USER_KANA_NAME || ','
|| rec_file.CLEARING_PROMISE_DATE || ','
|| rec_file.REPAY_STATUS_TYPE || ','
|| rec_file.REPAY_OPERATION_TYPE || ','
|| rec_file.REPAY_AMT || ','
|| rec_file.REPAY_DATE || ','
|| rec_file.REPAY_OCCUR_TYPE || ','
|| rec_file.CASH_SHIFT_TYPE || ','
|| rec_file.INDIVIDUAL_PAYMENT_REGIST_DATE || ','
|| rec_file.CASH_SHIFT_TO_DEPT_CODE || ','
|| rec_file.BILL_TRUST_TYPE || ','
|| rec_file.REPAY_TRUST_TYPE || ','
|| rec_file.ISS_TPP_8_CODE || ','
|| rec_file.CR_COOP_COLLECTION_DATE || ','
|| rec_file.CR_COOP_PAYMENT_DATE;
dbms_output.put_line(lv_file_line);
UTL_FILE.PUTF(vHandle,lv_file_line);
dbms_output.put_line('!!!!!!!!!!!UTL_FILE.PUT_LINE!!!!!!!!!!!!!!!!!!!!!!!!!');
--vOutput := '初期化パラメータ UTL_FILE_DIR 経由でのファイル出力です';
END LOOP;
UTL_FILE.FCLOSE(vHandle);
xxae_common_pkg.put_log_footer(iv_retcode => retcode,iv_errbuf => errbuf);
dbms_output.put_line('!!!!!!!!!!!!!!!!!!!!!!!!!!!!244444444444444444444');
EXCEPTION
WHEN OTHERS THEN
--ROLLBACK;
retcode := 2;
errbuf := 'CUO LE ';
xxae_common_pkg.put_log_footer(iv_retcode => retcode,
iv_errbuf => errbuf);
-- dbms_output.put_line('ERROR:'||SQLERRM);
END main;END XXAE03103;
/数据都取出来了,韩树勇的也对,就是生成不了文件,大家帮帮忙哦!!
CREATE OR REPLACE PACKAGE BODY APPS.XXAE03103
IS PROCEDURE main(errbuf IN OUT VARCHAR2
,retcode IN OUT VARCHAR2
,in_occur_type IN VARCHAR2
,in_date IN DATE)
IS
--create or replace directory vDirname as 'C:\xpxpxpxp\';
CURSOR cur_file_loop IS
SELECT
XXAE_REPAY.TPP_CODE,
XXAE_REPAY.TPP_DIVIDE_CODE,
XXAE_REPAY.CONTR_CORP_CODE,
XXAE_CONTR_CORP.CONTR_CORP_NAME,
XXAE_REPAY.CONTR_FORM_TYPE,
XXAE_REPAY.CONTR_SUB_ID,
XXAE_REPAY.SCHEME_TYPE,
XXAE_REPAY.DOMESTIC_BRAND_CODE,
XXAE_REPAY.DOMESTIC_BRAND_CODE2,
XXAE_REPAY.INTER_BRAND_CODE,
XXAE_REPAY.CARD_NUM,
XXAE_REPAY.USER_KANA_NAME,
XXAE_REPAY.CLEARING_PROMISE_DATE,
XXAE_REPAY.REPAY_STATUS_TYPE,
XXAE_REPAY.REPAY_OPERATION_TYPE,
XXAE_REPAY.REPAY_AMT,
XXAE_REPAY.REPAY_DATE,
XXAE_REPAY.REPAY_OCCUR_TYPE,
XXAE_REPAY.CASH_SHIFT_TYPE,
XXAE_REPAY.INDIVIDUAL_PAYMENT_REGIST_DATE,
XXAE_REPAY.CASH_SHIFT_TO_DEPT_CODE,
XXAE_REPAY.BILL_TRUST_TYPE,
XXAE_REPAY.REPAY_TRUST_TYPE,
XXAE_REPAY.ISS_TPP_8_CODE,
XXAE_REPAY.CR_COOP_COLLECTION_DATE,
XXAE_REPAY.CR_COOP_PAYMENT_DATE
FROM XXAE_REPAY,XXAE_CONTR_CORP
WHERE XXAE_REPAY.REPAY_OCCUR_TYPE = in_occur_type AND
--trunc(XXAE_REPAY.REPAY_DATE) = to_date(in_date,'yyyy/mm/dd') AND
XXAE_REPAY.CONTR_CORP_CODE = XXAE_CONTR_CORP.CONTR_CORP_CODE
ORDER BY XXAE_REPAY.TPP_CODE;
vHandle UTL_FILE.FILE_TYPE;
vDirname VARCHAR2(250); --パス名
vFilename VARCHAR2(250); --ファイル名
-- vOutput VARCHAR2(32767);
lv_file_line VARCHAR(32767);
BEGIN
xxae_common_pkg.put_log_header();
vDirname :='C:\TEMP';
vFilename := 'WREN.txt'; vHandle := UTL_FILE.FOPEN(vDirname,vFilename,'w');
--dbms_output.put_line(in_occur_type||in_date);
dbms_output.put_line('!!!!!!!!!!!!!!!!!!!!!!!!!!!!23333333333333333333');
FOR rec_file IN cur_file_loop LOOP
dbms_output.put_line('!!!!!!!!!!!!!!!!!!!!!!!!!!!!23333333333333333333');
lv_file_line := rec_file.TPP_CODE || ','
|| rec_file.TPP_DIVIDE_CODE || ','
|| rec_file.CONTR_CORP_CODE || ','
|| rec_file.CONTR_CORP_NAME || ','
|| rec_file.CONTR_FORM_TYPE || ','
|| rec_file.CONTR_SUB_ID || ','
|| rec_file.SCHEME_TYPE || ','
|| rec_file.DOMESTIC_BRAND_CODE || ','
|| rec_file.DOMESTIC_BRAND_CODE2 || ','
|| rec_file.INTER_BRAND_CODE || ','
|| rec_file.CARD_NUM || ','
|| rec_file.USER_KANA_NAME || ','
|| rec_file.CLEARING_PROMISE_DATE || ','
|| rec_file.REPAY_STATUS_TYPE || ','
|| rec_file.REPAY_OPERATION_TYPE || ','
|| rec_file.REPAY_AMT || ','
|| rec_file.REPAY_DATE || ','
|| rec_file.REPAY_OCCUR_TYPE || ','
|| rec_file.CASH_SHIFT_TYPE || ','
|| rec_file.INDIVIDUAL_PAYMENT_REGIST_DATE || ','
|| rec_file.CASH_SHIFT_TO_DEPT_CODE || ','
|| rec_file.BILL_TRUST_TYPE || ','
|| rec_file.REPAY_TRUST_TYPE || ','
|| rec_file.ISS_TPP_8_CODE || ','
|| rec_file.CR_COOP_COLLECTION_DATE || ','
|| rec_file.CR_COOP_PAYMENT_DATE;
dbms_output.put_line(lv_file_line);
UTL_FILE.PUTF(vHandle,lv_file_line);
dbms_output.put_line('!!!!!!!!!!!UTL_FILE.PUT_LINE!!!!!!!!!!!!!!!!!!!!!!!!!');
--vOutput := '初期化パラメータ UTL_FILE_DIR 経由でのファイル出力です';
END LOOP;
UTL_FILE.FCLOSE(vHandle);
xxae_common_pkg.put_log_footer(iv_retcode => retcode,iv_errbuf => errbuf);
dbms_output.put_line('!!!!!!!!!!!!!!!!!!!!!!!!!!!!244444444444444444444');
EXCEPTION
WHEN OTHERS THEN
--ROLLBACK;
retcode := 2;
errbuf := 'CUO LE ';
xxae_common_pkg.put_log_footer(iv_retcode => retcode,
iv_errbuf => errbuf);
-- dbms_output.put_line('ERROR:'||SQLERRM);
END main;END XXAE03103;
/数据都取出来了,韩树勇的也对,就是生成不了文件,大家帮帮忙哦!!
解决方案 »
- oracle运行上下文的内存泄露问题
- oracle sql developer使用过程中的字符问题
- 分享好东西:oracle9i.中国it实验室的远程教学ocp录像 ---一起下载啦
- 高分求救一oracle数据库的启动问题????
- D版的ORACLE9I是否能正常运行较大型的(如200用户连接)??
- 我的怎么连接不上oracle数据库呀!
- 几个SQL,设计到表的连接等,请看看.
- Oracle中怎么转移表空间啊!
- 查询时出现,尤其是用order by 时?请问这是什么问题,如何解决??在线等ing?
- 文本文件中的数据导入远程的服务器oracle数据库
- 我想知道oracle中,表对应序列对象,该如何查找?
- SQl语句查询速度的问题
试试下面的是否能建:
--sys
CREATE DIRECTORY ddd AS 'c:\';
GRANT READ,WRITE ON DIRECTORY ddd to SCOTT;--scott
DECLARE
FILE_HANDLE UTL_FILE.FILE_TYPE;
BEGIN
FILE_HANDLE := UTL_FILE.FOPEN('DDD', 'xx.txt', 'w',32767);
UTL_FILE.put_line(FILE_HANDLE, 'abcd');
UTL_FILE.FCLOSE(FILE_HANDLE);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlerrm);
END;
/
权限赋予成功
程序正常完了
但c盘根目录下也没创建xx.txt这个文件阿,和我的程序一样哦。
帮帮忙!!
//===============这样可以在c:\test下生成xx.txt文件===================可读写路径(c:盘下test文件夹必须已经存在,若没有可自己新建),创建文件名:
SQL> declare
2 fn utl_file.file_type;
3 begin
4 fn:=utl_file.fopen('c:\test','xx.txt','w');
5 utl_file.fclose(fn);
6 end;
7 /PL/SQL 过程已成功完成。
//===============授权==============================================SQL> GRANT EXECUTE ON UTL_FILE TO SCOTT;授权成功。SQL> CONNECT SCOTT/SCOTT
已连接。
//===============向文件xx.txt写内容=================================写内容:
SQL> DECLARE
2 FILE_HANDLE UTL_FILE.FILE_TYPE;
3 BEGIN
4 FILE_HANDLE := UTL_FILE.FOPEN('c:\test', 'xx.txt', 'w',32767);
5 UTL_FILE.put_line(FILE_HANDLE, 'hello world!');
6 UTL_FILE.FCLOSE(FILE_HANDLE);
7 EXCEPTION
8 WHEN OTHERS THEN
9 dbms_output.put_line(sqlerrm);
10 END;
11 /PL/SQL 过程已成功完成。//=========这样可以在c:\test下生成xx.txt文件中写入内容“hello world!”=========