Plsql 如何在oracle中获取文件大小或对象大小

Plsql 如何在oracle中获取文件大小或对象大小,plsql,oracle11g,Plsql,Oracle11g,我有一个表包含三列ID、Obj_名称和表中的对象。对象是指位于文件夹中的元数据/文件。如何编写脚本来检查每个对象的文件大小 输出类 ID、对象名称、对象、文件大小 如果有任何想法,请告诉我。因为对象是一个b文件,您可以执行以下操作 CREATE OR REPLACE FUNCTION( p_id IN INTEGER ) RETURN INTEGER IS l_bfile bfile; l_length integer; BEGIN SELECT object INTO

我有一个表包含三列ID、Obj_名称和表中的对象。对象是指位于文件夹中的元数据/文件。如何编写脚本来检查每个对象的文件大小

输出类

ID、对象名称、对象、文件大小


如果有任何想法,请告诉我。

因为
对象
是一个
b文件
,您可以执行以下操作

CREATE OR REPLACE FUNCTION( p_id IN INTEGER )
  RETURN INTEGER
IS
  l_bfile  bfile;
  l_length integer;
BEGIN
  SELECT object
    INTO l_bfile
    FROM your_table
   WHERE id = p_id;

  DBMS_LOB.OPEN(l_bfile, DBMS_LOB.LOB_READONLY);
  /* Get the length of the LOB: */
  l_length := DBMS_LOB.GETLENGTH(l_bfile);
  DBMS_LOB.CLOSE(l_bfile);

  RETURN l_length;
END;
然后从查询中调用该函数,并传入
id
。请注意,此示例直接取自

尝试以下操作:

 DECLARE
 v_fexists      BOOLEAN;
 v_file_length  NUMBER;
 v_block_size   BINARY_INTEGER;
 BEGIN
  UTL_FILE.FGETATTR
     ('NFS_DIR', 'west.txt', v_fexists, v_file_length, 

 v_block_size);
  DBMS_OUTPUT.PUT_LINE (v_file_length);
END;

“位于文件夹中”是什么意思?您是说
对象
列是一个
b文件
?数据库服务器操作系统上文件的路径?已为其创建Oracle
目录
对象的路径(并且您已被授予权限)?不同文件系统上的路径?是的,对象是一个B文件,文件的路径在DB操作系统上。ID对象+路径对象1 c:/users/text.txt 2 c:/users/text1.txt 3 c:/users/text2.txt 4 c:/users/text3.txtID对象+路径对象1 c:/users/text.txt 2 c:/users/text1.txt 3 c:/users/text2.txt 4 c:/users/text3。txt@user3280677-好的。那么
对象
就不是你最初说的
b文件
?这是一个
varchar2
?这是数据库服务器上文件的路径吗?是否有用于
c:\users
的Oracle目录对象?您对该Oracle目录对象具有读取权限吗?很抱歉,我错过了它。我提供的路径是临时的。我们确实有对该对象的读取权限。@user3280677-我不确定我是否理解。你说这条路是暂时的是什么意思?在数据库服务器文件系统上指向
c:\users
的Oracle目录对象(显示在所有目录中)的名称是什么?