使用 pl/sql 从文本文件中读取文件
Reading file from text file using pl/sql
我想读取文本文件,将其存储在一个变量中并在pl/sql中输出该变量。我正在使用以下代码,但 error:statement 被忽略了。
create or replace PROCEDURE blah
AS
DECLARE
f UTL_FILE.FILE_TYPE;
s VARCHAR2(200);
BEGIN
f := UTL_FILE.FOPEN('C:\Users\s420105\Music','blahh.txt','R');
UTL_FILE.GET_LINE(f,s);
UTL_FILE.FCLOSE(f);
dbms_output.put_line(s);
END;
我不确定 UTL 权限,但我想如果是由于 UTL 权限,它会抛出不同的错误。
几个问题:
- 您不需要
DECLARE
语句。 syntax 是 CREATE [OR REPLACE] PROCEDURE [schema.]name AS ... BEGIN ... END;
- UTL_FILE.FOPEN 的位置参数是目录对象的句柄,而不是包含目录路径的字符串。
此代码应该有效:
CREATE DIRECTORY DIR__MUSIC AS 'C:/Users/s420105/Music';
/
CREATE PROCEDURE blah
AS
f UTL_FILE.FILE_TYPE;
s VARCHAR2(200);
BEGIN
f := UTL_FILE.FOPEN( 'DIR__MUSIC', 'blahh.txt', 'R', 200 );
UTL_FILE.GET_LINE( f, s );
UTL_FILE.FCLOSE( f );
DBMS_OUTPUT.PUT_LINE( s );
END;
/
SHOW ERRORS;
/
读取整个文件的一种简单方法是:
CREATE DIRECTORY DIR__MUSIC AS 'C:/Users/s420105/Music';
/
CREATE PROCEDURE blah
AS
f CLOB;
BEGIN
f := DBMS_XSLPROCESSOR.READ2CLOB( 'DIR__MUSIC', 'blahh.txt' );
DBMS_OUTPUT.PUT_LINE( f );
END;
/
SHOW ERRORS;
/
我想读取文本文件,将其存储在一个变量中并在pl/sql中输出该变量。我正在使用以下代码,但 error:statement 被忽略了。
create or replace PROCEDURE blah
AS
DECLARE
f UTL_FILE.FILE_TYPE;
s VARCHAR2(200);
BEGIN
f := UTL_FILE.FOPEN('C:\Users\s420105\Music','blahh.txt','R');
UTL_FILE.GET_LINE(f,s);
UTL_FILE.FCLOSE(f);
dbms_output.put_line(s);
END;
我不确定 UTL 权限,但我想如果是由于 UTL 权限,它会抛出不同的错误。
几个问题:
- 您不需要
DECLARE
语句。 syntax 是CREATE [OR REPLACE] PROCEDURE [schema.]name AS ... BEGIN ... END;
- UTL_FILE.FOPEN 的位置参数是目录对象的句柄,而不是包含目录路径的字符串。
此代码应该有效:
CREATE DIRECTORY DIR__MUSIC AS 'C:/Users/s420105/Music';
/
CREATE PROCEDURE blah
AS
f UTL_FILE.FILE_TYPE;
s VARCHAR2(200);
BEGIN
f := UTL_FILE.FOPEN( 'DIR__MUSIC', 'blahh.txt', 'R', 200 );
UTL_FILE.GET_LINE( f, s );
UTL_FILE.FCLOSE( f );
DBMS_OUTPUT.PUT_LINE( s );
END;
/
SHOW ERRORS;
/
读取整个文件的一种简单方法是:
CREATE DIRECTORY DIR__MUSIC AS 'C:/Users/s420105/Music';
/
CREATE PROCEDURE blah
AS
f CLOB;
BEGIN
f := DBMS_XSLPROCESSOR.READ2CLOB( 'DIR__MUSIC', 'blahh.txt' );
DBMS_OUTPUT.PUT_LINE( f );
END;
/
SHOW ERRORS;
/