调用存储过程问题

 var sql = "  CALL FUN_JHCBHS('" + date + "','" +  error_msg + "')";

 setTimeout(FR.remoteEvaluate('=SQL("lsh","' + sql + '",1,1)'),2000);

 为啥这么写存储过程执行不了,存储过程如下

CREATE DEFINER=`root`@`%` PROCEDURE `FUN_JHCBHS`(IN p_JHFADM VARCHAR(40),out p_error_msg VARCHAR(255) )

但是我把返回信息去掉,然后改成 var sql = "  CALL FUN_JHCBHS('" + date + "')"; 

 setTimeout(FR.remoteEvaluate('=SQL("lsh","' + sql + '",1,1)'),2000); 就能执行

FineReport zjslh1999 发布于 2025-5-13 14:16
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
用户k6280494Lv6专家互助
发布于2025-5-13 14:18
最佳回答
0
snrtuemcLv8专家互助
发布于2025-5-13 14:19(编辑于 2025-5-13 14:20)

call 改成

exec 

试试

 var sql = "  exec  FUN_JHCBHS " + date + "," +  error_msg;

最佳回答
0
FR-LeonLv4初级互助
发布于2025-5-13 14:39
  1. 存储过程调用格式限制FineReport仅支持两种固定格式的存储过程调用语句:

    • {CALL 存储过程名(...)}

    • {?=CALL 存储过程名(...)}您当前使用的CALL FUN_JHCBHS(...)格式不符合要求

  2. 输出参数处理问题当存储过程包含输出参数时,必须使用{?=CALL...}格式显式声明参数类型

解决方案

修改您的JavaScript代码为:


// 带输出参数的调用方式

var sql = "{?=CALL FUN_JHCBHS('" + date + "',?)}";

setTimeout(FR.remoteEvaluate('=SQL("lsh","' + sql + '",1,1)'),2000);
补充说明
  1. 参数传递时需要确保:

    • 输入参数值用单引号包裹

    • 输出参数用问号占位

  2. SQL函数限制:SQL()函数仅支持查询语句,对存储过程的调用可能存在兼容性问题,建议改用存储过程数据集方式调用

建议通过「数据集>存储过程数据集」方式定义调用更可靠:存储过程设置示例

  • 4关注人数
  • 22浏览人数
  • 最后回答于:2025-5-13 14:39
    请选择关闭问题的原因
    确定 取消
    返回顶部