1

是否可以在使用 redshift 数据库的 sql 工作台上创建存储过程?

我试图输入一些在互联网上找到的程序,比如这个

CREATE OR REPLACE FUNCTION proc_sample RETURN INTEGER
IS
  l_result INTEGER;
BEGIN
  SELECT max(col1) INTO l_result FROM sometable;
  RETURN l_result;
END;

但我得到一个错误,光标不在语句内

请帮忙。

4

2 回答 2

0

您不能在函数中使用 from 子句。您必须使用带有 out 子句的参数的过程。

于 2020-06-10T16:12:29.177 回答
0

这是我对 Redshift 存储过程的翻译:

CREATE OR REPLACE PROCEDURE proc_sample (
      l_result  OUT  INTEGER
)
LANGUAGE plpgsql
AS $$
BEGIN
  SELECT max(col1) INTO l_result FROM sometable;
END
$$;

您在 Redshift 中调用此存储过程,如下所示:

BEGIN; CALL proc_sample(); END;
--  l_result
-- ----------
--        99

有关更多信息,请参阅“Amazon Redshift 中的存储过程概述”

于 2020-06-10T14:12:05.257 回答