永洪社区

标题: 动态SQL拼接,参数如何传递? [打印本页]

作者: 在水一方    时间: 2024-2-29 10:45
标题: 动态SQL拼接,参数如何传递?
各位老师好,我的需求描述是这样:
1、目前业务系统有张数据表中不同字段分别存储了SQL查询目标(select 业务字段 from 业务表名)、SQL条件(日期条件、筛选条件)。
2、我需要根据业务需求通过上面的表拼接成一个完整的SQL。
3、拼接后的SQL找个方式运行,我目前两种方式:一是创建数据集;二是开发了一个执行SQL的接口。

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

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


作者: 阿姆斯特朗炮    时间: 2024-2-29 10:47
你把拼接报错的截图发出来看看
作者: yhdata_lyaa    时间: 2024-2-29 10:54
数据集里使用参数可以参考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
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
在水一方 发表于 2024-2-29 11:13
我的整条SQL都是拼接的,而不是个别条件,比如:字段1存的是 SELECT 字段名 from 表名,字段2存的是 WHER ...

内嵌方式可以将select子句作为参数传入
作者: 在水一方    时间: 2024-2-29 11:39
yhdata_lyaa 发表于 2024-2-29 11:23
内嵌方式可以将select子句作为参数传入

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

写了有什么字符吗




欢迎光临 永洪社区 (http://club.yonghongtech.com/) Powered by Discuz! X3.4