On Aug 19, 5:22 pm, Michael Bayer <[EMAIL PROTECTED]> wrote:
> On Aug 19, 2008, at 5:08 PM, Gerrat wrote:
>
>
>
>
>
>
>
> > This doesn't quite work:
>
> > the DDL class (well, the method '_TextClause' in the module
> > 'expression' actually) parses out any sql containing a ':' (colon) as
> > if it were a bind variable.
> > Althouth the documentation says: "SQL bind parameters are not
> > available in DDL statements", it still looks for anything that
> > resembles a bind variable, then binds these variables to the None
> > value. Sqlalchemy then sends these invalid bind variables off to the
> > database with the sql.
>
> > I get an error back from the database with my trigger sql text,
> > followed by {'new':None, 'old':None}.
> > The special keywords in Oracle ':new', and ':old', aren't actually
> > bind variables when used in PL/SQL.
>
> > Any ideas for a workaround?
> > I'm using version 0.5.0beta3-py2.5
>
> the colon can be escaped using a backslash, i.e. \: .
>
> Maybe it would be a good idea for DDL() to construct _Text() with a
> flag to disable bind parameter matching.- Hide quoted text -
>
> - Show quoted text -
...well that was easy! Works like a charm now! Thanks.
I saw the regex, but didn't really parse it out to notice that \x5c
was just a backslash.
Using backslashes isn't a huge deal, but I suppose adding a flag to
disable bind parameter matching would be a little easier to work
with. I'd rather not clutter up my sql with backslashes, so I'm using
a regex to escape the :old and :new vars before passing them to DDL.
Seems kind of hackish to have to put them in so they can be stripped
out when they probably shouldn't be necessary.
Either way, I'm happy now.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---