我正在使用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()
生成的,然后根据正则表达式进行检查。
答案 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;