Как использовать результат функции для оператора вставки? - PullRequest
0 голосов
/ 02 марта 2020

У меня есть функция, которая возвращает varchar

    CREATE OR REPLACE Function HashPassword(in p_email varchar, in p_password varchar)
RETURNS TABLE(
    o_password varchar,
    o_user_id int
) as
$$
    return query select 'myresult', 9999;
END
$$
Language plpgsql;

Я хочу сделать вставку в таблицу, которая является результатом вызова функции

insert into table_that_needs_it(id, password, date)
select 99999, (select o_password from HashPassword('myemail', 'mypassword')), CURRENT_TIMESTAMP;

Это дает мне следующая ошибка

ERROR:  syntax error at or near ";"

1 Ответ

1 голос
/ 02 марта 2020

Использовать только один SELECT:

insert into table_that_needs_it(id, password, date)
select 99999, o_password, CURRENT_TIMESTAMP
from hashpassword('myemail', 'mypassword');

Если вы также хотите использовать идентификатор:

insert into table_that_needs_it(id, password, date)
select o_user_id, o_password, CURRENT_TIMESTAMP
from hashpassword('myemail', 'mypassword');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...