On Thu, Dec 26, 2019 at 01:55:34PM +0000, Ray O'Donnell wrote:
> On 26/12/2019 13:36, stan wrote:
> >             IF _bom_name_key is NULL
> >             THEN
> > WITH inserted AS (
> >             INSERT into project_bom 
> >                     (project_key, bom_name)
> >             VALUES
> >                     (NEW.project_key , 'Main') 
> >             RETURNING 
> >                     project_bom_key
> >             ) 
> > /* Syntax error flagged at this line */
> > _bom_name_key  = ( SELECT 
> >                     project_bom_key 
> >                FROM inserted )
> > ;
> >             ELSE
> >                     NEW.project_bom_key = _bom_name_key;
> >             END IF;
> >     END IF;
> 
> 
> You need to use the SELECT INTO syntax:
> 
>   with inserted as (
>      ....
>   )
>   select project_bom_key into _bom_name_key
>   from inserted
>   (etc)
> 
> Likewise, while I don't think there's anything wrong with the earlier
> assignment -
> 
>   _bom_name_key := (select....);
> 
> - to my eye the SELECT INTO looks more natural:
> 
>   select project_bom_key
>   into _bom_name_key
>   from ... (etc).
> 
> It's a PL/pgSQL construct - full details here:
> 
> https://www.postgresql.org/docs/12/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW
> 
> I hope that this helps.
> 
> Ray.

Thanks for the quick response.

Yes, that solved my issue.

RE different syntax. Yes I need to be more careful to be consistent in the
way I do things. I have a tendency to do the same thing different ways when
there are multiple ways of doing the same thing.
-- 
"They that would give up essential liberty for temporary safety deserve
neither liberty nor safety."
                                                -- Benjamin Franklin


Reply via email to