【发布时间】:2020-12-16 01:53:39
【问题描述】:
当我使用 UTL_FILE.FGETATTR 时,块大小每次都返回 0。我可以获得文件长度等,但块大小返回 0。这可能是什么原因,我该如何解决这个问题? 操作系统:Windows 10 数据库:19c
DECLARE
v_fexists BOOLEAN;
v_file_length NUMBER;
v_block_size BINARY_INTEGER;
BEGIN
UTL_FILE.FGETATTR ('TEST_DIR','temp file.txt',v_fexists,v_file_length,v_block_size);
IF v_fexists THEN
DBMS_OUTPUT.PUT_LINE('The file exists');
DBMS_OUTPUT.PUT_LINE('Its length is :'||v_file_length);
DBMS_OUTPUT.PUT_LINE('Its block size is :'||v_block_size);
ELSE
DBMS_OUTPUT.PUT_LINE('The file does not exist!');
END IF;
END;
PL/SQL procedure successfully completed.
The file exists
Its length is :2794
Its block size is :0
【问题讨论】:
-
你能举个例子吗?因为如果文件存在,它应该返回块大小
-
我相信这与Windows有关。因为我在 Linux 上做了同样的测试,它没有问题(相同的数据库版本)
-
您是否尝试在另一个目录中?也许问题是 windows 10 ,它不是 windows server os 版本。我无法在我这边的 Windows 上进行测试 :(
-
我认为这在 Windows 上仍然是预期的;请参阅 My Oracle Support 上的文档 ID 274466.1。它仅指 9i/10g,但看不出它可能已经改变。 (不过,如果是这样的话,这似乎是一个文档错误......)
-
@AlexPoole ,不错的收获。确实这就是原因 ;) 我只是与支持部门的一个人核实,该文档适用于每个 Oracle 版本,即使它说只有 9i/10g。
标签: windows oracle oracle19c utl-file