LABEL_STR_CMP
📄字数 815
👁️阅读量 加载中...
功能描述
比较两个安全标签的 LEVEL 与 CATEGORY 之间的包含关系。
语法格式
sql
LABEL_STR_CMP(expr1, expr2, expr3)输入参数
expr1:VARCHAR类型或者能隐式转换为VARCHAR类型的其他类型的值,策略名称。expr2:VARCHAR类型或者能隐式转换为VARCHAR类型的其他类型的值,标签字符串。expr3:VARCHAR类型或者能隐式转换为VARCHAR类型的其他类型的值,标签字符串。
输出结果
INTEGER 数值类型,返回结果如下:
- 输入参数为
NULL时,输出结果为NULL。 - 返回值为
0,表示两个安全标签完全相同(相同指的是等级(level)相同且类别(category)集合完全一致)。 - 返回值为
1,expr1的LEVEL不低于expr2,且其类别集合包含expr2的全部类别。 - 返回值为
-1,表示expr1的等级低于expr2或expr1类别不包含expr2的类别。
执行类型
| TYPE | VALUE | 说明 |
|---|---|---|
| NATIVE | 1 | 函数只能在本地计算 |
| VOLATI | 0 | 函数的每次计算值不同 |
| STABLE | 0 | 函数的每次计算值相同 |
| COMPUTE | 0 | 函数支持预计算取值 |
| NOT_CONST | 0 | 函数不支持转常数 |
| HAVE_DEF | 0 | 函数参数有默认值 |
示例
sql
-- 登录安全员(SYSSSO)创建安全策略
SQL> CREATE POLICY sso_policy_new ADD LEVEL LEVEL_1 AS 10,ADD CATEGORY CATEGORY1;
-- 为安全标签增加CATEGORY
SQL> ALTER POLICY sso_policy_new ADD CATEGORY pol1, ADD CATEGORY pol2, ADD CATEGORY pol3, ADD CATEGORY pol4, ADD CATEGORY pol5,ADD CATEGORY pol6;
-- 比较两个安全标签的 LEVEL 与 CATEGORY 之间的包含关系
SQL> SELECT LABEL_STR_CMP('sso_policy_new','POL1','POL2') FROM dual;
+-------+
| EXPR1 |
+-------+
| -1 |
+-------+