Django connects Oracle and runs PLSQL statements
The code is as follows:
def exec_db():
sql = """
DECLARE
v_money BINARY_INTEGER := 10;
BEGIN
dbms_output.put_line('Hello World');
UPDATE TEST1 SET USER_SALERY=USER_SALERY+v_money;
COMMIT;
END; """
# sql ='DECLARE v_money BINARY_INTEGER := 10; BEGIN UPDATE TEST1 SET USER_SALERY=USER_SALERY+v_money; COMMIT; END;'
db_conn = connections['accounting']
cursor = None
try:
cursor = db_conn.cursor()
cursor.execute(sql)
db_conn.commit()
except:
logger.error(traceback.format_exc())
finally:
if cursor:
cursor.close()
db_conn.close()
This SQL has no problem in the database connection tool, but the following error is reported in the code:
django.db.utils.DatabaseError: ORA-06550: line 8, column 7:
PLS-00103: Encountered the symbol “end-of-file” when expecting one of the following: ;
The symbol “;” was substituted for “end-of-file” to continue.
There are problems in writing SQL as multiple lines and single line.
Finally found the last; After that, add a space as the end. It’s going to work.
There’s no problem with one or more lines.
It’s very weird. Record it.