尝试向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.
如果用户在购物车中已经有选定的图书,并且如果当前没有该图书的副本,则试图使购物车UPDATE
和INSERT
嘿想要购物车。
执行方法是这样的:
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;
我附在'BEGIN'和'END'但现在我得到那个说'PLS-00103错误:出现符号“档案结尾”期待一个时如下所示:(begin case else else if end end ... ...。它提到'END'作为它期望的东西,为什么它会失败? – mnky9800n
在INSERT语句末尾需要一个分号,加上“END IF “在结束之前 – GriffeyDog
@ mnky9800n:是否有效? –