On Apr 25, 11:13 am, Tim Sawyer <list.dja...@calidris.co.uk> wrote:

>  >>> import cx_Oracle
>  >>> from django.db import connection
>  >>> cursor = connection.cursor()
>  >>> lOutput = cursor.var(cx_Oracle.STRING)
>  >>> cursor.execute("BEGIN %s := 'N'; END;", [lOutput])
> Traceback (most recent call last):
>    File "<console>", line 1, in <module>
>    File "/home/...snip.../django/db/backends/oracle/base.py", line 349,
> in execute
>      raise e
> DatabaseError: ORA-06550: line 1, column 23:
> PLS-00103: Encountered the symbol "end-of-file" when expecting one of
> the following:
>     ; <an identifier> <a double-quoted delimited-identifier>
> The symbol ";" was substituted for "end-of-file" to continue.

The trailing semicolon is automatically stripped by the backend, which
is necessary for most of the queries it runs but incorrect for PL/
SQL.  The easiest fix is to add a space or a second semicolon at the
end.  Or you can do what Django does internally, which is to terminate
the PL/SQL block with a forward-slash on its own line after the
semicolon, as if the block were to be entered into sqlplus.  In that
case the forward-slash will be stripped, but the semicolon will be
left alone.

HTH,
Ian

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to