按钮通过JS执行SQL语句,语句执行两次如何解决?

场景是想通过按钮点击向某表插入数据。

var sql ="SQL(\"DB\",\" INSERT INTO TESTTABLE select '123' \",1,1)"

alert(sql);

var Count = FR.remoteEvaluate(sql);

image.png

点击按钮最后执行的结果:

image.png

l441816062 发布于 2022-2-24 23:08
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
zsh331Lv8专家互助
发布于2022-2-24 23:15

-- 为什么执行二次,下面有介绍;建议用存储过程来实现该功能!

——————————————————————————————————————

SELECT 'AA'";

var a=FR.remoteEvaluate('SQL("JDBC3", "'+sql+'", 1, 1)');

当插入数据库表的都是两条记录,也就是说,insert操作执行了2次。

— 正确使用SQL()函数插入数据,被执行的sql必须要有返回结果集,否则,就会执行2次。

下面的代码,执行结果就只插入1条。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

存储过程:

create proc test_w

(@t varchar(50))

as

set nocount on

insert into table1(col1) select @t

select 1

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

按钮代码:

var sql="exec test_w 't11111tt'";

var a=FR.remoteEvaluate('SQL("JDBC3", "'+sql+'", 1, 1)');

最佳回答
0
陈体星Lv3见习互助
发布于2022-9-2 15:34(编辑于 2022-9-2 15:43)

这边就不解释为什么会insert 两次了直接点

就说你写 sql 的最后一行加一条 select '成功' 或者 select 1 就可以避免插入两次

例如   FR.remoteEvaluate('=sql("数据集名称","  insert into test(a) values(123) select 1  ",1,1)');

这里直接就数字了 字母得话需要 \''字母'\' 这个自己再研究研究 直接告诉你还容易忘记。

*特殊符号需要转义

*最后select  随便你返回啥 我是  select 1  因为字母还得单引号  这特殊还得转义一下

写存储道理是一样的 

  • 5关注人数
  • 996浏览人数
  • 最后回答于:2022-9-2 15:43
    请选择关闭问题的原因
    确定 取消
    返回顶部