尝试向Oracle中的表中插入数据时发生错误

问题描述:

我正在使用python 2.7和cx_Oracle模块。当我尝试运行以下查询:从cx_Oracle我收到以下错误尝试向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()

DatabaseError: ORA-00911: invalid character 

当我把它放在SQL加上它说:

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

如果用户在购物车中已经有选定的图书,并且如果当前没有该图书的副本,则试图使购物车UPDATEINSERT嘿想要购物车。

执行方法是这样的:

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

和每个参数是用户使用rawinput()产生,然后核对正则表达式。

您需要将您的语句附在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; 
+0

我附在'BEGIN'和'END'但现在我得到那个说'PLS-00103错误:出现符号“档案结尾”期待一个时如下所示:(begin case else else if end end ... ...。它提到'END'作为它期望的东西,为什么它会失败? – mnky9800n

+1

在INSERT语句末尾需要一个分号,加上“END IF “在结束之前 – GriffeyDog

+0

@ mnky9800n:是否有效? –