Database 从函数调用dbms_比较Oracle包

Database 从函数调用dbms_比较Oracle包,database,oracle,comparison,Database,Oracle,Comparison,我发布这个问题是因为我在尝试从oracle函数使用dbms_comparison oracle包时遇到了一些错误 我创建了一个函数,该函数应该返回执行比较的scanID,以便能够从Java检索scanID的值。但是,函数未成功执行,因为它会引发一些错误。dbms_比较被识别为标识符,因此引发以下错误:PLS-00201:必须声明标识符“dbms_比较” 请在下面找到我创建的Oracle函数。任何帮助都将不胜感激 CREATE OR REPLACE FUNCTION compareReco

我发布这个问题是因为我在尝试从oracle函数使用dbms_comparison oracle包时遇到了一些错误

我创建了一个函数,该函数应该返回执行比较的scanID,以便能够从Java检索scanID的值。但是,函数未成功执行,因为它会引发一些错误。dbms_比较被识别为标识符,因此引发以下错误:PLS-00201:必须声明标识符“dbms_比较”

请在下面找到我创建的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:必须声明标识符“DBMS\U比较”


因此,您必须将代码
sys.
添加到
dbms\u comparison
中,并且需要
将execute on sys.dbms\u comparison授予您的用户

我将您的代码作为sys进行了测试,并且编译成功。因为另一个用户失败了

PLS-00201:必须声明标识符“DBMS\U比较”


因此,您必须将您的代码
sys.
添加到
dbms\u比较中
,并且需要
将execute on sys.dbms\u比较授予您的用户

我正在尝试授予execute,但它提供的信息不足privileges@gla315你是以sys连接的吗?我正在尝试授予execute,但它没有提供足够的权限privileges@gla315你是吗作为系统连接?