UPDATE products SET quantity = to_number( SELECT  CASE WHEN (quantity -  51 ) < 0  THEN 'Error Out Store' ELSE to_char(quantity -  51 ) END  FROM products  WHERE proid =  16 )  where proid = 16 
ERROR - java.sql.SQLException: ORA-00936: 缺少表达式帮忙看看

解决方案 »

  1.   

    又看到update from了,oracle不支持此语法,要改一下
      

  2.   

    看错了,你是to_number放错地方了
    UPDATE products
       SET quantity =
              (SELECT TO_NUMBER (CASE
                                    WHEN (quantity - 51) < 0
                                       THEN 'Error Out Store'
                                    ELSE TO_CHAR (quantity - 51)
                                 END
                                )
                 FROM products
                WHERE proid = 16)
     WHERE proid = 16
      

  3.   

    发现你是同表更新,就不用子查询了啊UPDATE products
       SET quantity =
               TO_NUMBER (CASE
                                    WHEN (quantity - 51) < 0
                                       THEN 'Error Out Store'
                                    ELSE TO_CHAR (quantity - 51)
                                 END
                                )
                
     WHERE proid = 16
      

  4.   

    quantity number型的,但你后面怎么又把'Error Out Store'转成number再赋给quantity呢
      

  5.   

    我是让它返回'Error Out Store' 事务回滚