LABEL_CMP
📄字数 646
👁️阅读量 加载中...
功能描述
比较两个安全标签编码值。
语法格式
sql
LABEL_CMP(expr1,expr2)
输入参数
expr1
:BIGINT
类型或者能隐式转换为BIGINT
类型的其他类型的值,安全标签编码。expr2
:BIGINT
类型或者能隐式转换为BIGINT
类型的其他类型的值,安全标签编码。
输出结果
INTEGER
数值类型,返回结果如下:
- 输入参数为
NULL
时,输出结果为NULL
。 - 返回值为
0
,表示两个安全标签完全相同。 - 返回值为
1
,表示expr1
中的标签包含expr2
中的标签。 - 返回值为
-1
,表示expr1
中的标签不包含expr2
中的标签。
示例
sql
-- 登录普通用户创建测试表
SQL> CREATE TABLE TAB1(D1 INT);
-- 登录安全员(SYSSSO)创建安全策略
SQL> CREATE POLICY sso_policy_new ADD LEVEL LEVEL_1 AS 10,ADD CATEGORY CATEGORY1;
-- 给表tab1增加安全策略,需要安全员用户操作
SQL> ALTER TABLE POLICY sysdba.tab1 ADD sso_policy_new COLUMN D2 HIDE LABEL 'level_1:category1';
-- 将安全策略从字符串转为内部标签值
SQL> SELECT LABEL_FROM_CHAR('sso_policy_new', 'level_1:category1') FROM dual;
+------------------+
| EXPR1 |
+------------------+
| 2814749767106561 |
+------------------+
-- 比较两个安全标签编码值
SQL> SELECT LABEL_CMP(2814749767106561, 2814749767106561) FROM dual;
+-------+
| EXPR1 |
+-------+
| 0 |
+-------+