从函数调用 dbms_comparison Oracle 程序包
Call dbms_comparison Oracle package from function
我发布这个问题是因为我在尝试使用来自 Oracle 函数的 dbms_comparison oracle 包时遇到一些错误。
我创建了一个函数,它应该 return 所执行比较的 scanID,以便能够从 Java 检索 scanID 的值。但是,该函数未成功执行,因为它引发了一些错误。 dbms_comparison 被识别为标识符,因此会引发以下错误:PLS-00201:必须声明标识符 'DBMS_COMPARISON'。
请在下面找到我创建的 Oracle 函数。任何帮助将不胜感激。
CREATE OR REPLACE FUNCTION compareRecords
RETURN NUMBER IS
scanID number;
v_scan_info dbms_comparison.comparison_type;
v_compare_result boolean;
begin
v_compare_result:= dbms_comparison.compare(
comparison_name => 'synchronised',
scan_info => v_scan_info,
perform_row_dif => TRUE);
dbms_output.put_line('Scan id: '||v_scan_info.scan_id);
scanID := v_scan_info.scan_id;
if v_compare_result = TRUE then
dbms_output.put_line(a => 'Tables are synchronized!');
else
dbms_output.put_line(a => 'Warning! Data divergence found!'||chr(10));
end if;
RETURN scanID;
end compareRecords;
我以 sys 身份测试了您的代码,并成功编译。作为另一个用户失败
PLS-00201: identifier 'DBMS_COMPARISON' must be declared.
因此您必须将代码 sys.
添加到 dbms_comparison
并且需要 grant execute on sys.dbms_comparison to youruser
我发布这个问题是因为我在尝试使用来自 Oracle 函数的 dbms_comparison oracle 包时遇到一些错误。
我创建了一个函数,它应该 return 所执行比较的 scanID,以便能够从 Java 检索 scanID 的值。但是,该函数未成功执行,因为它引发了一些错误。 dbms_comparison 被识别为标识符,因此会引发以下错误:PLS-00201:必须声明标识符 'DBMS_COMPARISON'。
请在下面找到我创建的 Oracle 函数。任何帮助将不胜感激。
CREATE OR REPLACE FUNCTION compareRecords
RETURN NUMBER IS
scanID number;
v_scan_info dbms_comparison.comparison_type;
v_compare_result boolean;
begin
v_compare_result:= dbms_comparison.compare(
comparison_name => 'synchronised',
scan_info => v_scan_info,
perform_row_dif => TRUE);
dbms_output.put_line('Scan id: '||v_scan_info.scan_id);
scanID := v_scan_info.scan_id;
if v_compare_result = TRUE then
dbms_output.put_line(a => 'Tables are synchronized!');
else
dbms_output.put_line(a => 'Warning! Data divergence found!'||chr(10));
end if;
RETURN scanID;
end compareRecords;
我以 sys 身份测试了您的代码,并成功编译。作为另一个用户失败
PLS-00201: identifier 'DBMS_COMPARISON' must be declared.
因此您必须将代码 sys.
添加到 dbms_comparison
并且需要 grant execute on sys.dbms_comparison to youruser