我发布这个问题,因为我在尝试使用Oracle函数中的dbms_comparison oracle包时遇到了一些错误。
我创建了一个函数,它应该返回执行的比较的scanID,以便能够从Java中检索scanID的值。但是,该功能未成功执行,因为它会引发一些错误。 dbms_comparison被识别为标识符,因此它引发以下错误:PLS-00201:identifier' 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;
答案 0 :(得分:0)
我将您的代码测试为sys并成功编译。由于另一个用户失败
PLS-00201:标识符' DBMS_COMPARISON'必须宣布。
因此,您必须将代码sys.
添加到dbms_comparison
,并且需要grant execute on sys.dbms_comparison to youruser