我在SQL中有以下3个函数。
注册帐户:
create or replace function register
(email text,
username text,
password text)
returns text
as $$
begin
...
end
$$ language 'plpgsql';
激活帐户:
create or replace function activate
(token text)
returns void
as $$
begin
....
end
$$ language 'plpgsql';
登录账号:
create or replace function login
(username text,
password text)
returns text
as $$
begin
end
$$ language 'plpgsql';
我如何一次调用所有3个函数?我已经尝试使用with
命令,但没有成功
with account_activation_certificate as
(
select
*
from
register
(
'john@example.com',
'john',
'abcd1234'
)
)
select
*
from
activate
(
select
*
from
account_activation_certificate
)
with
jwt
as
(
select
*
from
login
(
'john',
'abcd1234'
)
/* Additional queries using jwt */
);
你似乎把括号弄混了。例如,子查询必须总是用(额外的)括号括起来。
这是一个程序要求,所以使用程序代码:
DO LANGUAGE plpgsql $$
DECLARE
email text := 'john@example.com';
username text := 'john';
password text := 'abcd1234';
BEGIN
PERFORM activate(
register(email, username, password)
);
PERFORM login(username, password);
END;
$$;
DO
语句允许您在SQL语句中使用过程代码,在本例中是PL/pgSQL代码。