ORA-01722:无效号码 ORA-06512:在 "SYS.DBMS_SQL" 行 1721 预言机错误



我有一个客户表数据,下面是我的一些数据
这是我的客户表,我将主键约束写入客户表,如下所示
,这是储蓄表的数据我想更新客户表中与储蓄表中的钱相对应的分类数据A>5000000000 5000000000<B<10000000000 c>100000000000
这是我做的代码,我不明白为什么它在这里报告了错误,你能指出我的错误吗
它在很大的一行上给出了我的错误,但事实上我没有写那行

update customer 
set classifi = (
  SELECT (
   CASE WHEN saving.money < 5000000000 THEN 'Grade C' WHEN saving.money 
   BETWEEN 5000000001 AND 10000000000 THEN 'Grade B' ELSE 'Grade A' END) AS 
   RANK FROM saving;
  ) 
where customer_id =10;

您的语句是

update customer set classifi = (
    SELECT (CASE 
       WHEN saving.money < 5000000000 THEN 'Grade C' 
       WHEN saving.money BETWEEN 5000000001 AND 10000000000 THEN 'Grade B' 
       ELSE 'Grade A' END) AS RANK 
    FROM saving;) 
where customer_id = 10;

删除内部分号:

update customer set classifi = (
    SELECT (CASE 
       WHEN saving.money < 5000000000 THEN 'Grade C' 
       WHEN saving.money BETWEEN 5000000001 AND 10000000000 THEN 'Grade B' 
       ELSE 'Grade A' END) AS RANK 
    FROM saving) 
where customer_id = 10;

但是,只有当表saving只有一行时,它才会起作用。是这样吗?

最新更新