尝试将一些结果输出到windows文件夹“c:\ temp”中。编译并运行我的程序没有任何问题,但我找不到我的输出文件“c:\ temp \ foo.log”。这是我的代码:
CREATE OR REPLACE DIRECTORY tmp AS 'c:\temp\';
CREATE OR REPLACE PROCEDURE write_log
AS
CURSOR cur
IS
SELECT firstname,
lastname
FROM MEMBER
WHERE memberid BETWEEN 2 AND 5; -- only test 3 rows.
fname MEMBER.firstname%TYPE;
lname MEMBER.lastname%TYPE;
outputrecord VARCHAR2 ( 255 );
outputfile UTL_FILE.file_type;
BEGIN
OPEN cur;
FETCH cur
INTO fname,
lname;
outputfile := UTL_FILE.fopen ( UPPER ( 'tmp' ),
'foo.log',
'W',
32767
);
WHILE cur%FOUND
LOOP
outputrecord := fname || ',' || lname;
UTL_FILE.put ( outputfile, outputrecord );
UTL_FILE.new_line ( outputfile );
FETCH cur
INTO fname,
lname;
END LOOP;
CLOSE cur;
UTL_FILE.fclose ( outputfile );
END write_log;
/
BEGIN
write_log;
END;
/
我在这里做错了吗?
谢谢!
答案 0 :(得分:2)
UTL_FILE
操纵数据库服务器上的文件,而不是客户端计算机上的文件。您只能在数据库服务器上读写文件。假设此代码成功运行,它将在名为c:\temp\foo.log
的数据库服务器上创建一个文件。