Thread: SQL If THEN
Hi all.
I was wondering if somenone can help me.
I needed to do a cursor.execute of a function writen in sql.
The function is:
cursor.execute("""BEGIN
IF (TG_OP = 'UPDATE') THEN
select NEW.test;
RETURN NEW;
END IF;
END;)""")
I always get an error message saying ProgrammingError: syntax error at or near "IF"
is there a way to execute this function inside a python script?
Thanks!
I was wondering if somenone can help me.
I needed to do a cursor.execute of a function writen in sql.
The function is:
cursor.execute("""BEGIN
IF (TG_OP = 'UPDATE') THEN
select NEW.test;
RETURN NEW;
END IF;
END;)""")
I always get an error message saying ProgrammingError: syntax error at or near "IF"
is there a way to execute this function inside a python script?
Thanks!
On 07/11/2012 05:12 AM, Filipe Brandão wrote: > Hi all. > > I was wondering if somenone can help me. > I needed to do a cursor.execute of a function writen in sql. > The function is: > cursor.execute("""BEGIN > IF (TG_OP = 'UPDATE') THEN > select NEW.test; > RETURN NEW; > END IF; > END;)""") > > I always get an error message saying ProgrammingError: syntax error at > or near "IF" > is there a way to execute this function inside a python script? IF (TG_OP = 'UPDATE') is unique to the pgsql language and is not available to straight SQL unless: Two options. 1) Write the above as a pgsql function in the database and call the function. 2) Depending on the version of Postgres use DO: http://www.postgresql.org/docs/9.1/interactive/sql-do.html > > Thanks! > > -- Adrian Klaver adrian.klaver@gmail.com
On 07/11/2012 05:12 AM, Filipe Brandão wrote: > Hi all. > > I was wondering if somenone can help me. > I needed to do a cursor.execute of a function writen in sql. > The function is: > cursor.execute("""BEGIN > IF (TG_OP = 'UPDATE') THEN > select NEW.test; > RETURN NEW; > END IF; > END;)""") > > I always get an error message saying ProgrammingError: syntax error at > or near "IF" > is there a way to execute this function inside a python script? Have had coffee, am now ready for correct answer:( The above code snippet will only work in a trigger function. My previous suggestion to use DO was wrong. The only way the above is going to work is in a pgsql function that is then attached to a trigger. > > Thanks! > > -- Adrian Klaver adrian.klaver@gmail.com