我需要有关Oracle的RLS功能的帮助。我以前从未使用过它,但是在网上做了一些研究,但是我遇到了一个问题。
这是我已采取的步骤:
1-创建函数:
create or replace function
table_access_policy
(obj_schema varchar2, obj_name varchar2) return varchar2
is
v_project varchar2(2000);
begin
v_project:= '(select project from users where user_name = (select sys_context(''userenv'',''session_user'') from dual))';
return 'project = ' || v_project;
end;
2-添加安全策略
Begin
DBMS_RLS.ADD_POLICY ('db1', 'data', 'access_policy', 'admin', 'table_access_policy', 'SELECT' );
End;
3-在对象上运行一个简单的选择查询
select * from db1.data
当我执行步骤3时,出现以下错误:
ORA-28113:策略谓词具有错误28113。00000-“策略谓词具有错误”
原因:策略函数生成无效的谓词。操作:查看跟踪文件以获取详细的错误信息。行错误:5列:14
我不知道安全功能有什么问题。我在db1模式上成功地手动使用了它,如下所示:
select * from data
where project = (select project from users where user_name = (select sys_context('userenv','session_user') from dual))
有什么想法吗??
由于您的策略功能位于管理架构上,因此您应使用其架构对用户表中的选择进行限定:
v_project:= '(select project from db1.users where user_name = (select sys_context(''userenv'',''session_user'') from dual))';
此外,您应按照建议的方式检查跟踪文件,因为它将向您显示运行的确切SQL以及实际的错误消息。
谓词是指用方括号写的XPath表达式。 它指的是为某些条件限制节点集中的选定节点。 例如, 序号 序号 描述 1 选择第一个元素,它是元素的子元素。 2 选择最后一个元素,它是元素的子元素。 3 使用选择元素。 4 选择大于的元素。 示例 此示例通过迭代每个学生创建一个包含其详细信息的元素。 它计算节点的位置,然后打印学生的详细信息以及序列号。 文件:students.xml - 文件:stude
谓词 Clojure 提供了很多函数来充当谓词的功能 — 测试条件是否成立。它们的返回值是 true或者false。在Clojure里面 false 以及 nil 被解释成false. true 以及任何其他值都被解释成true, 包括0。谓词函数的名字一般以问号结尾。 反射是一种获取一个对象的特性,而不是它的值的过程。比如说对象的类型。有很多谓词函数进行反射。 测试一个对象的类型的谓词包括 cl
Predicates是评估条件并提供true或false值的函数。 我们在数字章节的例子中看到了谓词函数。 我们看过像'even?'这样的功能 用来测试一个数字是否是偶数,或'neg?' 用于测试数字是否大于零。 所有这些函数都返回true或false值。 以下是Clojure中谓词的示例。 (ns clojure.examples.example (:gen-class)) ;; This
谓词是针对某些特定条件测试其参数的函数,如果条件为假则返回nil,或者某些非零值是条件为真。 下表显示了一些最常用的谓词 - Sr.No. 谓词和描述 1 atom 它接受一个参数,如果参数是原子则返回t,否则返回nil。 2 equal 它需要两个参数,如果它们在结构上相等则返回t否则返回nil 。 3 eq 它需要两个参数,如果它们是相同的相同对象,则返回t ,共享相同的内存位置,否则返回ni
本文向大家介绍谓词演算,包括了谓词演算的使用技巧和注意事项,需要的朋友参考一下 谓词演算处理谓词,谓词包含变量。 谓词 谓词是在某个特定域上定义的一个或多个变量的表达式。通过给变量赋值或量化变量,可以使带有变量的谓词成为命题。 请请看以下语句。 拉姆是学生。 现在根据谓词演算来考虑以上陈述。 这里“是学生”是谓词,Ram是主题。 让我们将“ Ram”表示为x,将“是学生”表示为谓词P,然后可以将上
本文向大家介绍Prologcall / N谓词,包括了Prologcall / N谓词的使用技巧和注意事项,需要的朋友参考一下 示例 该call/N谓词的家人可以在运行时调用任意Prolog的目标: