找文章 / 找答案
精选问答 更多内容

[数据处理] 使用脚本传参出错

无畏养生玄铁二 显示全部楼层 发表于 2022-9-21 23:43:33 |阅读模式 打印 上一主题 下一主题
1
已解决

【数据处理】 使用脚本传参出错

1832 1
-- 新建数据集 001 ,运算符 IN 在AND里
select * from aaa
<年龄> WHERE age = ?{年龄} </年龄>
<名称> AND Name IN (?{名称}) </名称>

-- 新建数据集 002 ,运算符 IN 在WHERE里
select * from aaa
<名称> WHERE Name IN (?{名称}) </名称>
<年龄> AND age = ?{年龄} </年龄>

随便建个报告,使用aaa数据集,在使用 脚本--转载时运行填写,运算符IN的那个参数,如下,
使用002数据集的报告不会报错,使用001数据集的报告会报错
param['名称']='张三'


我在最新的桌面永洪版本,和8.0.6b企业版都试过了。运算符IN的参数好像只能跟随WHERE

屏幕截图 2022-09-21 233947.png

最佳答案

永洪社区YVP
阿姆斯特朗炮 铂金二 关注Ta

2022-09-21 23:43:34

首先你得知道是什么意思,如果没有参数参数中的这一段其实是没有的,也就是你的参数有名称,没有年龄,你一个sql你把年龄的放在了前面,但是没有穿年龄的参数,所以where包括后面的都没有,只拼接上了and后面的名称,所以报and附近有语法错误,第二个数据集你的名称在前面,所以拼接的where条件是没有任何问题的 正确的写法应该是这样写 select * from aaa WHERE 1=1 and age = ?{年龄} AND Name IN (?{名称}) ...
查看完整内容
回复

使用道具 举报

精彩评论1

阿姆斯特朗炮铂金二 显示全部楼层 发表于 2022-9-21 23:43:34
首先你得知道<>是什么意思,如果没有参数<>参数中的这一段其实是没有的,也就是你的参数有名称,没有年龄,你一个sql你把年龄的放在了前面,但是没有穿年龄的参数,所以where包括后面的都没有,只拼接上了and后面的名称,所以报and附近有语法错误,第二个数据集你的名称在前面,所以拼接的where条件是没有任何问题的
正确的写法应该是这样写
select * from aaa
WHERE  1=1 <年龄> and age = ?{年龄} </年龄>
<名称> AND Name IN (?{名称}) </名称>
回复

使用道具 举报

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

  • 官方微信

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

    扫码关注
  • 新浪微博

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

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

会员等你来哦

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