• 发帖数9
  • 粉丝0

此人很懒,什么也没有留下

[数据处理] 动态SQL拼接,参数如何传递?

在水一方青铜四 显示全部楼层 发表于 2024-2-29 10:45:14 |阅读模式 打印 上一主题 下一主题
1
未解决
各位老师好,我的需求描述是这样:
1、目前业务系统有张数据表中不同字段分别存储了SQL查询目标(select 业务字段 from 业务表名)、SQL条件(日期条件、筛选条件)。
2、我需要根据业务需求通过上面的表拼接成一个完整的SQL。
3、拼接后的SQL找个方式运行,我目前两种方式:一是创建数据集;二是开发了一个执行SQL的接口。

但上述方式都需要通过参数进行SQL传递,SQL中的条件运算符(如:>=,单引号)在BI中是非法字符

我该如何处理?如果有更好的方式,也希望赐教。

回复

使用道具 举报

精彩评论6

阿姆斯特朗炮皇冠三 显示全部楼层 发表于 2024-2-29 10:47:34
你把拼接报错的截图发出来看看
回复

使用道具 举报

yhdata_lyaa 显示全部楼层 发表于 2024-2-29 10:54:31
数据集里使用参数可以参考https://www.yonghongtech.com/rea ... paramindataset.html
?{@a},内嵌参数形式
这种内嵌的参数将被直接在SQL Statement中替换为参数值,而不是调用prepared statement.setParam(),这种办法有更高的灵活性,例如可以不要select而是将select子句作为参数传入, 或者将表名作为参数,如 select * from ?{@a}, a可以是任意输入的table name。
回复

使用道具 举报

在水一方青铜四 显示全部楼层 发表于 2024-2-29 11:13:57
yhdata_lyaa 发表于 2024-2-29 10:54
数据集里使用参数可以参考https://www.yonghongtech.com/real-help/Z-Suite/10.1/ch/paramindataset.html
? ...

我的整条SQL都是拼接的,而不是个别条件,比如:字段1存的是 SELECT 字段名 from 表名,字段2存的是 WHERE t>1,我拼接的时候,需要把整条语句通过参数传递。
回复

使用道具 举报

yhdata_lyaa 显示全部楼层 发表于 2024-2-29 11:23:47
在水一方 发表于 2024-2-29 11:13
我的整条SQL都是拼接的,而不是个别条件,比如:字段1存的是 SELECT 字段名 from 表名,字段2存的是 WHER ...

内嵌方式可以将select子句作为参数传入
回复

使用道具 举报

在水一方青铜四 显示全部楼层 发表于 2024-2-29 11:39:21
yhdata_lyaa 发表于 2024-2-29 11:23
内嵌方式可以将select子句作为参数传入

按照您的方法已经解决了传递问题,但出现了新问题,我的where条件中,提示:参数包含非法字符。请教如何解决?
回复

使用道具 举报

yhdata_lyaa 显示全部楼层 发表于 2024-2-29 13:16:42
在水一方 发表于 2024-2-29 11:39
按照您的方法已经解决了传递问题,但出现了新问题,我的where条件中,提示:参数包含非法字符。请教如何 ...

写了有什么字符吗
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
50W

会员等你来哦

Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |联系社区管理员|《永洪社区协议》
返回顶部