尝试将数据插入Oracle中的表时出错

时间:2011-11-21 19:51:49

标签: oracle cx-oracle ora-00911

我正在使用python 2.7和cx_Oracle模块。当我尝试运行以下查询时:

UPDATE bs_cart
    SET qty = qty + :moreBooks
    WHERE userid = :userID 
    AND isbn = :bookNumber;

IF SQL%ROWCOUNT = 0 THEN
    INSERT INTO bs_cart
    (userid,isbn)
    VALUES
    (:userID,:bookNumber)

使用Cursor.execute()中的cx_Oracle我收到以下错误:

DatabaseError: ORA-00911: invalid character

当我把它放在SQL中时,它说:

SP2-0734: unknown command beginning "IF SQL%ROW..." - rest of line ignored.

如果用户已经在购物车中已选择了图书,我正在尝试制作购物车UPDATE,如果购物车中没有他们想要的图书的当前副本,我正在INSERT

执行方法如下:

ds.execute(sql,moreBooks=howMany,userID=userLoggedIn,bookNumber=booksToBuy)

并且每个参数都是使用rawinput()生成的,然后根据正则表达式进行检查。

1 个答案:

答案 0 :(得分:2)

您需要将语句括在begin / end Oracle块中。

类似的东西:

BEGIN
  UPDATE bs_cart
  SET qty = qty + :moreBooks
  WHERE userid = :userID 
  AND isbn = :bookNumber;

  IF SQL%ROWCOUNT = 0 THEN
     INSERT INTO bs_cart (userid,isbn)
     VALUES (:userID,:bookNumber);
END;