如何在SQL脚本中传递令牌?



我在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代码。

相关内容

  • 没有找到相关文章