如何实现输入sql,返回sql执行结果

如何实现在参数栏 输入sql,界面显示sql执行结果功能。

即页面数据库查询 在页面端实现

image.png

FineReport 18868876214 发布于 2019-12-10 10:15
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共6回答
最佳回答
1
影丶Lv5高级互助
发布于2019-12-10 11:18

可以实现,不过有一定的sql注入风险。

思路就是借用动态列的方法构造数据集,将原来写死的sql改成参数的形式,比如(Oracle):在外面套一层select * from ( ${if(len(参数)==0,'dual',参数)} )

参考:使用函数实现动态列-https://help.finereport.com/doc-view-1288.html


最佳回答
1
JackloveLv7高级互助
发布于2019-12-10 10:15

只能在数据集写

  • 18868876214 18868876214(提问者) 可以采用这种形式吗? =sql(\"odsdb\",\"select * from db2admin.FINE_AUTHORITY\",1) 把 sql主体替换为参数,列数做个循环参数传进去?
    2019-12-10 10:25 
  • Jacklove Jacklove 回复 18868876214(提问者) 不可以 参数都是数据集生成的 不可逆
    2019-12-10 10:27 
最佳回答
0
18038635057Lv4初级互助
发布于2019-12-10 10:17(编辑于 2019-12-10 10:19)

${参数},参数就是页面输入的sql,这些有sql防注入

image.png

最佳回答
0
shirokoLv6资深互助
发布于2019-12-10 10:18(编辑于 2019-12-10 10:20)

试了一下不行哦

image.png

image.png

image.png可以关掉但是会有安全问题

  • 18868876214 18868876214(提问者) 页面主体里如何显示查询的结果?
    2019-12-10 10:46 
  • shiroko shiroko 回复 18868876214(提问者) 在默认值字符串里输入一次,预览出结果就能拖入了
    2019-12-10 10:47 
  • 18868876214 18868876214(提问者) 回复 shiroko 那换了个sql,预览结果不一样了,页面主体的内容不能自动变化了
    2019-12-10 10:52 
  • 18868876214 18868876214(提问者) 回复 shiroko 暂时想了个办法 数据查询:select ${columns} from ${tables} ${condition} TABLEDATAFIELDS(\"ds1\") ds1.select(A1)
    2019-12-10 10:55 
  • shiroko shiroko 回复 18868876214(提问者) 你可以都设置一样的别名啊
    2019-12-10 10:55 
最佳回答
0
孙一Lv4见习互助
发布于2019-12-10 10:23

可以在数据集写好查询,在参数的数据字典里引用数据集的字段

最佳回答
0
18868876214Lv2见习互助
发布于2019-12-10 12:14

捕获.PNG

  • 5关注人数
  • 1181浏览人数
  • 最后回答于:2019-12-10 12:14
    请选择关闭问题的原因
    确定 取消
    返回顶部