exec執行js

var sql = "EXEC FRDB..SP_CRM '" + D3 + "', '" + USER + "', '" + ERP + "'"; FR.remoteEvaluate('SQL("FRDB-217", "' + sql + '", 1,1))');按钮元件按下去没执行

JavaScript 2024091801 发布于 6 小时前
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
ScyalcireLv7高级互助
发布于6 小时前(编辑于 6 小时前

FR.remoteEvaluate中的SQL()函数仅支持查询语句(SELECT),不支持EXEC执行存储过程。这是FineReport设计上的安全限制

系统默认开启「脚本调用公式限制」,会直接拦截FR.remoteEvaluate的使用,导致无反应。需在【数据决策系统→管理系统→安全管理→脚本调用公式限制】中关闭此开关

参数拼接语法错误当前代码存在SQL注入风险和语法闭合问题

--------

方案1:

  1. 新建【存储过程数据集】,直接调用 SP_CRM。

  2. 设置参数绑定,通过 ${参数名} 动态传递 D3, USER, ERP

方案2:

	// 使用encodeURIComponent转义特殊字符
	var d3_val = encodeURIComponent(D3);
	var user_val = encodeURIComponent(USER);
	var erp_val = encodeURIComponent(ERP);
	 
	var sql = "EXEC FRDB..SP_CRM '" + d3_val + "', '" + user_val + "', '" + erp_val + "'";
	FR.remoteEvaluate('sql("FRDB-217","' + sql.replace(/"/g, '\\"') + '",1,1)');

最佳回答
0
华莉星宸Lv7专家互助
发布于6 小时前(编辑于 6 小时前

var sql="exec sp_rms_select_0460 "+FUNDCODE+","+DATE+","+STATUS;

var res=FR.remoteEvaluate('=sql("dbbasedata","'+sql+'",1,1)');

=====解释说明

var sql="exec 存储过程名称 "+参数1+","+参数2+","+参数3;

var res=FR.remoteEvaluate('=sql("数据库连接","'+sql+'",1,1)');

-----------------

记得关闭这个

image.png

  • 3关注人数
  • 19浏览人数
  • 最后回答于:6 小时前
    请选择关闭问题的原因
    确定 取消
    返回顶部