Plsql 如何在oracle中获取文件大小或对象大小
我有一个表包含三列ID、Obj_名称和表中的对象。对象是指位于文件夹中的元数据/文件。如何编写脚本来检查每个对象的文件大小 输出类 ID、对象名称、对象、文件大小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
如果有任何想法,请告诉我。因为
对象
是一个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目录对象(显示在所有目录中)的名称是什么?