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()fromを使用するcx_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 に答える