Re: What am I doing wrong here?

Поиск
Список
Период
Сортировка
От Ray O'Donnell
Тема Re: What am I doing wrong here?
Дата
Msg-id d415686c-9496-53cc-a2e8-7c8c7af84090@rodonnell.ie
обсуждение исходный текст
Ответ на What am I doing wrong here?  (stan <stanb@panix.com>)
Ответы Re: What am I doing wrong here?  (stan <stanb@panix.com>)
Список pgsql-general
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
ray@rodonnell.ie



В списке pgsql-general по дате отправления:

Предыдущее
От: "Lu, Dan"
Дата:
Сообщение: RE: Question on upgrading postgresql from 10.7 to 11.5
Следующее
От: Jayadevan M
Дата:
Сообщение: Re: What am I doing wrong here?