帆软公式
 C##ODS.V_AUTH_TRADE =${if(fine_role == "superusers"||find("",fine_role)>0||find("",fine_role)>0||find("A",fine_role)>0,"","AND REGEXP_INSTR(role, replace('"+fine_role+"',',','|')) > 0")}

oracle  会根据当前用户登录的角色 判断对应的权限   当用户只有一个角色时没有问题  具有多个角色时 就会失效

FineReport 用户d5058247 发布于 2024-10-28 11:31
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
CD20160914Lv8专家互助
发布于2024-10-28 11:32(编辑于 2024-10-28 11:42)

多个角色,你就用in呀。

${if(len(参数名称)=0,"","and 表中的字段 in('"+ 参数名称 + "')")}

${if(fine_role == "superusers","","AND role in('"+ replace(fine_role,",","','") + "')")}

image.png

image.png

image.png

  • 用户d5058247 用户d5058247(提问者) 可是 如果是 多个角色的话 $fine_role 不是会返回多个角色拼接的字段嘛 举例 用户具有A B两个角色 通过 fine_role获取到的 不应该是 A,B 这一个字符串嘛 用 in的话应该不可以把
    2024-10-28 11:37 
  • CD20160914 CD20160914 回复 用户d5058247(提问者) 你仔细看我上面修改的语句。。要处理一下就可以的!
    2024-10-28 11:38 
  • CD20160914 CD20160914 回复 用户d5058247(提问者) 把逗号替换成单引号加逗号的符合,这样就符合sql的标准了!
    2024-10-28 11:39 
  • 用户d5058247 用户d5058247(提问者) 回复 CD20160914 感谢
    2024-10-28 11:57 
  • 2关注人数
  • 175浏览人数
  • 最后回答于:2024-10-28 11:42
    请选择关闭问题的原因
    确定 取消
    返回顶部