Windows UTL_FILE.FGETATTR为块大小返回0
使用UTL_FILE.FGETATTR时,块大小每次返回0。我可以得到文件长度等,但块大小返回0。原因是什么?我该如何解决? 操作系统:Windows 10 DB:19cWindows UTL_FILE.FGETATTR为块大小返回0,windows,oracle,oracle19c,utl-file,Windows,Oracle,Oracle19c,Utl File,使用UTL_FILE.FGETATTR时,块大小每次返回0。我可以得到文件长度等,但块大小返回0。原因是什么?我该如何解决? 操作系统:Windows 10 DB:19c 我只是发布了每个人都知道的答案,你可以将问题标记为已回答。这或多或少是我们在评论部分所谈论的一切的回忆 在Windows平台上,UTL_FILE.fgettr过程返回0而不是 正确的块大小,即使文件存在。Windows平台不提供任何系统子程序来获取文件系统I/O块大小,因此它返回0,这是预期的行为 尽管对9i/10g进行了预
我只是发布了每个人都知道的答案,你可以将问题标记为已回答。这或多或少是我们在评论部分所谈论的一切的回忆 在Windows平台上,UTL_FILE.fgettr过程返回0而不是 正确的块大小,即使文件存在。Windows平台不提供任何系统子程序来获取文件系统I/O块大小,因此它返回0,这是预期的行为 尽管对9i/10g进行了预测和记录,但该问题在12c、18c和19c上也可重现
我只是发布了每个人都知道的答案,你可以将问题标记为已回答。这或多或少是我们在评论部分所谈论的一切的回忆 在Windows平台上,UTL_FILE.fgettr过程返回0而不是 正确的块大小,即使文件存在。Windows平台不提供任何系统子程序来获取文件系统I/O块大小,因此它返回0,这是预期的行为 尽管对9i/10g进行了预测和记录,但该问题在12c、18c和19c上也可重现
你能举个例子吗?因为如果文件存在,它应该返回块sizeI相信它与Windows有关。因为我在Linux上做了相同的测试,并且它可以正常工作(相同的数据库版本),所以您是否在其他目录中尝试过?也许问题出在windows 10上,它不是windows server os版本。我无法在windows上进行测试:(我认为这在windows上仍然是意料之中的;请参阅Oracle支持上的Doc ID 274466.1。它只涉及9i/10g,但看不出它可能已经更改。(如果是这样的话,看起来像是一个文档错误…@AlexPoole,很好的捕获。确实这就是原因;)我只是和一位技术支持人员核实一下,该文档适用于每个Oracle版本,尽管上面说只有9i/10g。您能举个例子吗?因为如果文件存在,它应该返回块sizeI相信它与Windows有关。因为我在Linux上做了相同的测试,并且它可以正常工作(相同的数据库版本),所以您是否在其他目录中尝试过?也许问题出在windows 10上,它不是windows server os版本。我无法在windows上进行测试:(我认为这在windows上仍然是意料之中的;请参阅Oracle支持上的Doc ID 274466.1。它只涉及9i/10g,但看不出它可能已经更改。(如果是这样的话,看起来像是一个文档错误…@AlexPoole,很好的捕获。确实这就是原因;)我只是和一位技术支持人员核实一下,该文档适用于每一个Oracle版本,尽管它只说9i/10g。
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