Обсуждение: SQL If THEN

Поиск
Список
Период
Сортировка

SQL If THEN

От
Filipe Brandão
Дата:
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!


Re: SQL If THEN

От
Adrian Klaver
Дата:
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



Re: SQL If THEN

От
Adrian Klaver
Дата:
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