存储过程执行报无效数字

shixitong shixitong 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
存储过程
CREATE OR REPLACE PROCEDURE UpdatePiecesChn(pieceidStr  in varchar2,
updateChnid in NUMBER,
fromChnid in number) is
begin

delete from sc_st_chn_ps
where pieceid in (select pieceid
from sc_st_chn_ps
where chnid = updateChnid
and pieceid in (pieceidStr))
and chnid = fromChnid;
update sc_st_chn_ps
set chnid = updateChnid
where pieceid in (pieceidStr)
and chnid = fromChnid;
commit;
end UpdatePiecesChn;

然后调用
 exec UpdatePiecesChn('1555,1557,1560,1576,1577,1578,1547,1561,1573,1574,1586,1588,1590,1592,1593,1663,1664,2675,2676,2679,2681,2682,2683,2705,2708,2709,3722,3682,3723,5330,5331,5332,5563',504,198);

会报错误,错误提示信息:ORA-01722: 无效数字

我大概也知道原因是 in后面pieceidStr对应的值不合法
正确的应该是
  delete from sc_st_chn_ps
where pieceid in (select pieceid
from sc_st_chn_ps
where chnid = updateChnid
and pieceid in (1555,1557,1560,1576,1577,1578,1547,1561,1573,1574,1586,1588,1590,1592,1593,1663,1664,2675,2676,2679,2681,2682,2683,2705,2708,2709,3722,3682,3723,5330,5331,5332,5563))

而我这边变为了
  delete from sc_st_chn_ps
where pieceid in (select pieceid
from sc_st_chn_ps
where chnid = updateChnid
and pieceid in (‘1555,1557,1560,1576,1577,1578,1547,1561,1573,1574,1586,1588,1590,1592,1593,1663,1664,2675,2676,2679,2681,2682,2683,2705,2708,2709,3722,3682,3723,5330,5331,5332,5563’))


请问这个该怎么改? 这一串字符是前台传过来的,谢谢

...全文
评论 4
收藏 已收藏
分享
返回顶部
shixitong
基础和管理 17,379 成员 95,111 内容