0

我正在使用 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()fromcx_Oracle我得到以下错误:

DatabaseError: ORA-00911: invalid character

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

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

UPDATE如果用户已经在购物车中拥有所选书籍并且INSERT如果购物车中没有他们想要的书籍的当前副本,我正在尝试制作购物车。

执行方法如下所示:

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

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

4

1 回答 1

2

您需要将您的语句包含在begin/ endOracle 块中。

就像是:

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;
于 2011-11-21T19:54:36.593 回答