js中用SQL函数调用oracle存储过程,oracle存储过程该怎么写?

参照这个帖子 https://bbs.fanruan.com/thread-76079-1-1.html

SQL函数 没有返回值就报错,执行两次,该怎么写oracle存储过程?

js代码如下:

var sql="CALL PY_RESETPWD('"+vgh+"')";   var res=FR.remoteEvaluate('=sql("Oracle","'+sql+'",1,1)');

     

存储过程如下:

CREATE OR REPLACE PROCEDURE PY_RESETPWD (     USER_ID IN VARCHAR2      ) AS BEGIN         UPDATE HBI.T_NORMAL_ACCOUNT SET PASSWORD='000000' WHERE ACCOUNT_NAME=USER_ID;      COMMIT;       END;

JavaScript fantasy_07 发布于 2024-12-7 18:10 (编辑于 2024-12-7 21:12)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
fantasy_07Lv2见习互助
发布于2024-12-7 21:52(编辑于 2024-12-7 22:04)

最终通过新建一个函数,在函数中执行update解决了,个人认为比较完美

特发帖分享下

https://bbs.fanruan.com/thread-150933-1-1.html

最佳回答
0
华莉星宸Lv7资深互助
发布于2024-12-7 18:16

SQL(DB, SQL, COL, ROW)函数执行插入操作,必须要有返回结果

https://bbs.fanruan.com/thread-76079-1-1.html

  • fantasy_07 fantasy_07(提问者) 就是看了这个帖子,我才有疑问,oracle的存储过程怎么写?
    2024-12-07 19:12 
  • 华莉星宸 华莉星宸 回复 fantasy_07(提问者) 把那里面的改成 select 1 from dual;你这update操作执行两次也没关系吧
    2024-12-07 19:20 
  • fantasy_07 fantasy_07(提问者) 回复 华莉星宸 我的update执行两次也没问题,如果是插入操作,怎么弄呢
    2024-12-07 20:46 
最佳回答
0
snrtuemcLv8专家互助
发布于2024-12-7 18:36

要么增加一句返回,该存储过程

CREATE OR REPLACE PROCEDURE PY_RESETPWD (

    USER_ID IN VARCHAR2     

) AS

BEGIN    

    UPDATE HBI.T_NORMAL_ACCOUNT SET PASSWORD='000000' WHERE ACCOUNT_NAME=USER_ID; 

    COMMIT;      

select 1

END;

要么直接调用,不用存储过程

var sql=" UPDATE HBI.T_NORMAL_ACCOUNT SET PASSWORD='000000' WHERE ACCOUNT_NAME='"+vgh+"'"; 

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

  • fantasy_07 fantasy_07(提问者) 第一种方法显然不行,oracle不支持这么写 第二种方法我试过,日志提示报错,不过看结果的话,是执行成功了 也是执行了两次,不过不影响结果 比较好奇有没有优雅的写法,oracle的存储过程,就不能直接调用吗?
    2024-12-07 19:14 
最佳回答
0
帆软用户kpSWsnWFmILv0见习互助
发布于2024-12-8 00:42

要么增加一句返回,该存储过程

CREATE OR REPLACE PROCEDURE PY_RESETPWD (

    USER_ID IN VARCHAR2     

) AS

BEGIN    

    UPDATE HBI.T_NORMAL_ACCOUNT SET PASSWORD='000000' WHERE ACCOUNT_NAME=USER_ID; 

    COMMIT;      

select 1

END;

要么直接调用,不用存储过程

var sql=" UPDATE HBI.T_NORMAL_ACCOUNT SET PASSWORD='000000' WHERE ACCOUNT_NAME='"+vgh+"'"; 

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

  • 3关注人数
  • 40浏览人数
  • 最后回答于:2024-12-8 00:42
    请选择关闭问题的原因
    确定 取消
    返回顶部