截断 Oracle PL/SQL 块中的多个表失败

Truncating multiple tables in a Oracle PL/SQL block fails

运行 以下脚本:

import cx_Oracle

conn = cx_Oracle.connect(user = db_user, password = db_pwd, dsn = 'TULSA').
cur = conn.cursor()

sql = ("""  
        BEGIN
            truncate table shop_ord_temp;
            truncate table shop_ord_item_temp;
            truncate table shop_cust_temp;
        END;
    """)

cur.execute(sql)
cur.close()
conn.close()

在 运行 这个匿名区块时收到这个错误:

cx_Oracle.DatabaseError: ORA-06550: line 3, column 22:
PLS-00103: Encountered the symbol "TABLE" when expecting one of the following:

   := . ( @ % ;

您可以使用:

sql = ("""  
        BEGIN
            execute immediate 'truncate table shop_ord_temp';
            execute immediate 'truncate table shop_ord_item_temp';
            execute immediate 'truncate table shop_cust_temp';
        END;
    """)

这是一个 PL/SQL 功能,与 Python 无关。