您好,目前我们估计了一下,问题应该在这里。
首先在sql执行里面如果没有 {} 也就是我们的表达式,就会直接给ODBC,然后ODBC会有执行的那个方法。
如果带了参数,我们也给ODBC定义参数了。所以ODBC会先执行 SQLMoreResults ,这个作用是判断你的sql对不对。如果不对,就会返回并抛出错误,我估计就是您上面截图的报错。
所以这个问题目前排查是您的sql错了。而sql错的原因应该是 {} 翻译的没有单引号。
也就是假如您的 sql表达式如下:
- select * from test where col = {@参数}
复制代码 预览输入候,sql翻译得到的结果是:
- select * from test where col = 参数
复制代码 但是这种其实是不对的,sql正确的这个应该是 = 字符串类型,也就是:
- select * from test where col = '参数'
复制代码 所以sql表达式应该要这么写:
- select * from test where col = '{@参数}'
复制代码 同理,如果需要加双引号,或者多值的。也需要处理。如果是多值的参数,表达式还需要加 join:
这个得到的结果就是 : A,B,C
最好的是这样,您先把这个表达式不再数据集的输入框写,而是报表里面用一个文本框,把这个sql的写进文本框里,然后最后表达式得到的结果预览就可以看到了,您把预览看到的结果在数据库执行,如果可以正常执行,那就证明这个sql的表达式写的是正确的,就可以写在数据集的里面了,应该也就可以查询到数据了
|