如何在SAP IQ中动态执行SQL供Crystal Reports正常调用
SAP IQ动态SQL存储过程适配Crystal Reports问题
实现目标
在SAP IQ中编写存储过程,通过execute()执行动态SQL语句将结果写入临时表,再查询临时表数据作为存储过程输出。
故障现象
- 存储过程在SQL客户端中可正常返回符合预期的数据集
- 在Crystal Reports中执行时,无法返回正常业务列,仅返回名为
expression的列,判定为Crystal Reports无法解析该存储过程返回的结果集结构
待解决疑问
SAP IQ中动态执行查询的正确实现方式是什么,尤其是需要适配Crystal Reports调用存储过程的场景?
注:提问者此前主要使用SAP ASE,当前正在将ASE上的存储过程迁移至SAP IQ。
复现示例
存储过程代码:
/* 动态传值创建临时表的示例存储过程 */ create or replace proc test_exec ( @num_value int ) as begin -- 动态创建临时表,写入传入的列值 execute('select ' || @num_value || ' as column_1 into #temp') -- 返回查询结果 select column_1 from #temp end
SQL客户端执行效果(正常)
执行语句:
exec test_exec 123
返回结果:
| column_1 |
|---|
| 123 |
Crystal Reports执行效果(异常)
无法识别返回的column_1业务列,仅返回名为expression的无效列:
内容的提问来源于stack exchange,提问作者RToyo
相关产品推荐
相关产品推荐

