【发布时间】:2019-03-10 13:52:25
【问题描述】:
我有一个表,我必须单击一次按钮更新多个记录。我正在尝试使用以下简单查询更新多条记录。
UPDATE tablename SET column1=1 WHERE
idcolumn IN ('1','2','3')
其中 idcolumn 的数据类型是数字。如果我手动运行此查询,它会完美运行。但是,如果我通过程序传递这些 ('1','2','3') 参数,那么它会显示以下错误,即(ora-01722 无效数字)。
我尝试了 to_number() 函数,但它仍然显示我上面的错误。
过程:
CREATE OR REPLACE PROCEDURE procname(idpara VARCHAR2,
RCT_OUT OUT SYS_REFCURSOR) IS
BEGIN
UPDATE tablename SET column1 = 1 WHERE idcolumn IN (idpara);
COMMIT;
OPEN RCT_OUT FOR
SELECT 'RECORD UPDATED SUCCESSFULLY' RESULT FROM DUAL;
END;
【问题讨论】:
-
向我们展示您的程序代码。看起来你正在传递整个字符串。
-
这听起来很奇怪,但几乎可以肯定问题与您的数据有关。您需要发布一个可重现的测试用例,其中包含一些演示错误的示例数据。
-
对我来说,这听起来像是 IN 列表中的变化元素 问题(正如您提到的“过程”和“传递参数”)。不过,可以肯定的是,您应该发布一个测试用例(正如您已经被告知的那样)。
-
idpara是一个包含非数字值1,2,3的字符串。这已经出现了很多次了。请阅读this thread 和the thread it duplicates 了解所有选项。
标签: oracle oracle11g oracle10g