You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 'default()'数据掩码的Oracle等效实现方法咨询

Oracle 列掩码(数据脱敏)的兼容写法

Oracle中没有SQL Server那种直接ALTER COLUMN ADD MASKED的语法,要实现相同的列掩码功能,需要使用**数据红action(Data Redaction)**功能,通过DBMS_REDACT包创建掩码策略。

对应SQL Server default()掩码的实现语句

BEGIN
  DBMS_REDACT.ADD_POLICY(
    object_schema    => '你的模式名', -- 替换为表所在的模式,比如SCOTT,留空则用当前用户
    object_name      => 'Table_Name',
    column_name      => 'YEAR_CODE',
    policy_name      => 'YEAR_CODE_MASK_POL', -- 自定义唯一策略名
    function_type    => DBMS_REDACT.DEFAULT, -- 对应SQL Server的default()掩码
    expression       => '1=1' -- 对所有用户生效,可按需调整(比如排除管理员)
  );
END;
/

参数说明

  • function_type => DBMS_REDACT.DEFAULT:会根据列类型返回默认脱敏值,比如数字列返回0,字符列返回空串,日期列返回01-JAN-00,和SQL Server的default()掩码行为一致。
  • expression:如果需要让特定用户看到原始值,可修改为类似SYS_CONTEXT('USERENV','SESSION_USER') != 'ADMIN_USER'的表达式,只对非管理员用户生效掩码。

验证与管理

执行上述PL/SQL块后,没有EXEMPT REDACTION POLICY权限的用户查询Table_Name时,YEAR_CODE列会显示脱敏后的值;拥有该权限的用户(如DBA)可查看原始数据。

如果需要移除掩码策略,执行以下语句:

BEGIN
  DBMS_REDACT.DROP_POLICY(
    object_schema    => '你的模式名',
    object_name      => 'Table_Name',
    policy_name      => 'YEAR_CODE_MASK_POL'
  );
END;
/

内容的提问来源于stack exchange,提问作者Raghavendra Maiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:33:15