js调用存储过程插入数据
CREATE PROCEDURE nick( in p varchar(10),out r varchar(10) )

begin
declare a varchar(10);

set a = p;
insert into mtmsbi.`language` values(a);
select   1 into r;
end;

以上是定义的存储过程,

添加的页面加载前事件js:

var a = "test_2";  //字符串赋值
var b = "{CALL mtmsbi.nick('${"+a+"}')}";  //存储过程
var c= FR.remoteEvaluate('sql("mtmsbi","' + b + '",1,1)');

if(c==1){
	alert("OK!");
	}
else {alert("No!");
}

现在这样是插不进去数据,想请教各位大侠,哪里有问题呀?

尼克恒 发布于 2018-11-20 15:58
1min目标场景问卷 立即参与
回答问题
悬赏:6 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
6
我行我素Lv3初级互助
发布于2018-11-20 16:42

“字符需要转义的,改成\”

  • 尼克恒 尼克恒(提问者) 谢谢解答,需要把那句话的\" 改成\\\" 呢,存储过程的定义是没有问题的吗?
    2018-11-20 17:01 
最佳回答
2
snrtuemcLv8专家互助
发布于2020-9-1 08:26

调用时候少了个=号

在JS代码中使用FineReport内置的公式-https://help.finereport.com/doc-view-1785.html

image.png

最佳回答
0
shirokoLv6资深互助
发布于2020-9-1 08:36

FR.remoteEvaluate内部已经是调用帆软公式了,所以里面不能再有{}以及${}这种sql去调用帆软公式的用法。

var a = "test_2";  //字符串赋值
var b = "CALL mtmsbi.nick('"+a+"')";  //存储过程
var c= FR.remoteEvaluate('sql("mtmsbi","' + b + '",1,1)');
 
if(c==1){
    alert("OK!");
    }
else {alert("No!");
}


  • 5关注人数
  • 1090浏览人数
  • 最后回答于:2020-9-1 08:36
    请选择关闭问题的原因
    确定 取消
    返回顶部