Security DB2查询中显示输出的IF和ELSE条件

Security DB2查询中显示输出的IF和ELSE条件,security,db2,Security,Db2,有没有一种方法可以根据两种不同的条件显示表格的输出?例如,我有一个表演示,其中有一个字段PERSONGROUP。如果PERSONGROUP=A或B,则有一些用户属于此PERSONGROUP,并且如果登录的用户映射到这些PERSONGROUP,则它应该只显示演示表中的那些记录。如果登录的用户不属于个人组A或B,则应显示演示表中的所有记录 演示表中的数据 DEMOID PERSONGROUP USER 100 A TOM 200 B

有没有一种方法可以根据两种不同的条件显示表格的输出?例如,我有一个表演示,其中有一个字段PERSONGROUP。如果PERSONGROUP=A或B,则有一些用户属于此PERSONGROUP,并且如果登录的用户映射到这些PERSONGROUP,则它应该只显示演示表中的那些记录。如果登录的用户不属于个人组A或B,则应显示演示表中的所有记录

演示表中的数据

 DEMOID    PERSONGROUP  USER
  100        A           TOM
  200        B           TOM
  300                    DAVID
  400                    PAUL
当TOM登录时,他应该只看到100和200记录。当DAVID或PAUL登录时,他们应该会看到所有4条记录。下面是我使用的同一个查询,但是它不适用于else部分

select * from demo where (exists (select 1 from persongroupteam where persongroup = DEMO.persongroup and respparty = :user and persongroup in ('A','B'))

Db2中有两个选项:

  • 是一个特殊的寄存器,允许您针对登录用户编写查询
  • 这样的查询可能是视图的基础。
  • 您可以在基于的规则中使用会话\用户。RCAC提供了比视图更高的安全性

在SQL中,您可以使用CASE语句来实现IF/ELSE。另请参见,例如,此。

:user
更改为
SESSION\u user
select语句中的
persongroupteam
表的内容是什么?如何检查用户属于哪些组?不,它不起作用。问题不在于用户,而在于需要编写的条件。我不知道如何使用IF/ELSE实现这一点。请参阅我的答案和用例以实现IF/ELSE