暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle “SQL错误: ORA-28112: 无法执行策略功能”: 无法使用VPD进行选择。

askTom 2017-05-15
887

问题描述

我是Oracle的新手。
我试着用VPD考试。
但我无法选择与其他用户。
你可以在上面看到我的代码。
很抱歉我的英语。

专家解答

好的,让我们看看你功能的重要部分

Begin 
    user := SYS_CONTEXT('userenv', 'SESSION_USER'); 
    select maPhong into v_maPhong from nhanvien where maNv = user; 
    return 'maPhong = ' || v_maPhong; 
End; 


返回的字符串将作为WHERE子句添加到您的查询中。假设v_maPhong以CONNOR的身份回来。

所以一个查询,如:

从NHANVIEN中选择 *

现在会读起来像:

从NHANVIEN中选择 *
其中马普洪 = 康纳

这是错误的,因为没有名为CONNOR的专栏。你也需要注意报价。所以像这样的函数:

Begin 
    user := SYS_CONTEXT('userenv', 'SESSION_USER'); 
    select maPhong into v_maPhong from nhanvien where maNv = user; 
    return 'maPhong = ''' || v_maPhong || ''''; 
End; 


会回来

maPhong = 'CONNOR'

然后应该在您的查询中工作。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论