Re: writing a dynamic sql - Mailing list pgsql-sql

From Tomasz Myrta
Subject Re: writing a dynamic sql
Date
Msg-id 402FCE48.4010902@klaster.net
Whole thread Raw
In response to writing a dynamic sql  ("Senthil Kumar S" <ssakkaravel@ivesia.com>)
List pgsql-sql
Dnia 2004-02-10 10:48, Użytkownik Senthil Kumar S napisał:
> Dear friends,
> 
> I am having an lengthy SQL, which will be called every conditions of 
> if...else statement. I tried with passing that via a string and execute it.
> But I got error.
> v_sql :=
>   'INSERT INTO activities(
>     activity_id,
>     parent_activity_id,
>     activity_type_id,
>     subject,
>     description,
>     category_id,
>     priority_id,
>     activity_start_time,
>     activity_end_time,
> )
>  VALUES   (
>     NEXTVAL(\'seq_activities\'),
>     rec_recurrence.activity_id,
>     rec_activity.activity_type_id,
>     rec_activity.subject,
>     rec_activity.description,
>     rec_activity.category_id,
>     rec_activity.priority_id,
>     rec_activity.activity_start_time,
>     rec_activity.activity_end_time
> );';
> 
>   execute v_sql;
> 
> I got an error saying that the record variable which I declared earlier is
> not having reference (or it does not exists).
> 
> Any suggestion to pack this inside a dynamic function and call it inside
> many if conditions.

Your v_sql variable *must* contain static text only. It can't have any 
references to variables.

Here is little example how your query should look like:
... VALUES   (    NEXTVAL(\'seq_activities\'), '' || rec_recurrence.activity_id::text    || '','' ||
rec_activity.activity_type_id::text
...

After this v_sql will be: VALUES   (    NEXTVAL(\'seq_activities\'),1,2,...

Regards,
Tomasz Myrta


pgsql-sql by date:

Previous
From: Tomasz Myrta
Date:
Subject: Re: max timestamp
Next
From: Bruno Wolff III
Date:
Subject: Re: max timestamp