在 Oracle 中执行 DBMS_OUTPUT.PUT_LINE 时出错
Error executing DBMS_OUTPUT.PUT_LINE in Oracle
我 运行 DBMS_OUTPUT.PUT_LINE
从过程发送消息,我正在尝试显示类型变量包含的调试信息 BFILE
create or replace PROCEDURE P_FILEUPLOAD_XML IS
v_dir gzvcatg.gzvcatg_desc11%TYPE;
l_dir VARCHAR2(35);
l_fil VARCHAR2(30) := 'ES0000251446027471.xml';
l_loc BFILE;
BEGIN
l_loc := BFILENAME(v_dir,l_fil);
DBMS_OUTPUT.PUT_LINE(l_loc);
END;
在执行我的程序并等待日志响应的那一刻:
任何人都知道错误的原因以及如何更正它。
更新:
按照使用 DBMS_LOB.READ
的 MT0 响应中的建议,尝试以下操作:
create or replace PROCEDURE P_FILEUPLOAD_XML IS
v_dir gzvcatg.gzvcatg_desc11%TYPE;
l_dir VARCHAR2(35);
l_fil VARCHAR2(30) := 'ES0000251446027471.xml';
l_loc BFILE;
BEGIN
l_loc := BFILENAME(v_dir,l_fil);
DBMS_LOB.READ(l_loc IN BFILE);
END;
但是执行它会产生以下错误:
Anyone know why the error is due
l_loc
是 BFILE
.
DBMS_OUTPUT.PUT_LINE( item IN VARCHAR2 )
将 VARCHAR2
数据类型作为其参数。
您不能将 BFILE
隐式转换为 VARCHAR2
,因此过程调用会引发异常,因为调用函数时使用的参数类型错误。
and how to correct it.
使用 DBMS_LOB.READ
读取文件并使用 UTL_RAW.CAST_TO_VARCHAR2
将从 LOB 获得的 RAW
值转换为字符串以便打印。
我 运行 DBMS_OUTPUT.PUT_LINE
从过程发送消息,我正在尝试显示类型变量包含的调试信息 BFILE
create or replace PROCEDURE P_FILEUPLOAD_XML IS
v_dir gzvcatg.gzvcatg_desc11%TYPE;
l_dir VARCHAR2(35);
l_fil VARCHAR2(30) := 'ES0000251446027471.xml';
l_loc BFILE;
BEGIN
l_loc := BFILENAME(v_dir,l_fil);
DBMS_OUTPUT.PUT_LINE(l_loc);
END;
在执行我的程序并等待日志响应的那一刻:
任何人都知道错误的原因以及如何更正它。
更新:
按照使用 DBMS_LOB.READ
的 MT0 响应中的建议,尝试以下操作:
create or replace PROCEDURE P_FILEUPLOAD_XML IS
v_dir gzvcatg.gzvcatg_desc11%TYPE;
l_dir VARCHAR2(35);
l_fil VARCHAR2(30) := 'ES0000251446027471.xml';
l_loc BFILE;
BEGIN
l_loc := BFILENAME(v_dir,l_fil);
DBMS_LOB.READ(l_loc IN BFILE);
END;
但是执行它会产生以下错误:
Anyone know why the error is due
l_loc
是 BFILE
.
DBMS_OUTPUT.PUT_LINE( item IN VARCHAR2 )
将 VARCHAR2
数据类型作为其参数。
您不能将 BFILE
隐式转换为 VARCHAR2
,因此过程调用会引发异常,因为调用函数时使用的参数类型错误。
and how to correct it.
使用 DBMS_LOB.READ
读取文件并使用 UTL_RAW.CAST_TO_VARCHAR2
将从 LOB 获得的 RAW
值转换为字符串以便打印。