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.


-- 
Raymond O'Donnell // Galway // Ireland
r...@rodonnell.ie


Reply via email to