0

我想在包含原始数据的包和过程中使用经过编辑的列,但它只显示经过编辑的列,然后如何在过程中使用实际数据?在下面的示例中,ename 是编辑列并完全编辑为空。

    BEGIN   DBMS_REDACT.add_policy(
object_schema => 'hr',
object_name   => 'new_emp',
column_name   => 'ename',
policy_name   => 'redact_ename_info',
function_type => DBMS_REDACT.full,
expression    => '1=1' );END;/ --Redaction is done for ename column in new_emp table.

    create or replace procedure new_emp_pro(cust_id in varchar2) as
    v_ename varchar2(200):=null;
    begin
    select ename into v_ename from new_emp where empid=cust_id;
    dbms_output.put_line('v_ename :'||v_ename);
    end;
    /

    PL/SQL procedure successfully completed.

    v_ename :
4

1 回答 1

0

您想要做什么,您已经为所有用户编辑了列名称,因此当您尝试打印它时,系统不会显示该值,因为这是编辑的目的。内部名称值将可用于处理,但在所有处理后应用编辑。如果您能够打印 ename,那么整个编校目的就失败了,因为最终用户能够检索数据。

您可以检查 ename 是否为空

如果您需要更多详细信息,请告诉我。我最近在生产数据库中实现了编辑。

于 2020-03-02T10:57:24.353 回答