如何像脚本一样执行Redshift过程PL/pgSQL代码?

问题描述 投票:0回答:2

我一直想知道是否可以编写甲骨文“匿名块”脚本。 基本上运行任何 Redshift 过程代码,但在 SQL Workbench/J 等客户端中删除创建过程第一行?是否可能和/或我们是否需要在 SQL Workbench/J 中调整一些配置?

Declare
Xxx integer;

BEGIN
 Null;
 any PL/pgSQL code;
 
EXCEPTION when others
 Raise xxx ;
 
END;
$$ LANGUAGE plpgsql;

或者 - 最终 - 使用 postgres 命令行 这可能/可以吗 https://www.postgresql.org/docs/current/app-psql.html

oracle amazon-redshift plpgsql
2个回答
1
投票

使用 postgres 命令行可以实现这一点吗

PostgreSQL 自 9.0 版本以来就有了

DO
命令 来实现此目的。你的例子会翻译成这样:

DO
$do$
DECLARE
   xxx integer;
BEGIN
   -- any PL/pgSQL code;
EXCEPTION WHEN OTHERS THEN  -- optional
   RAISE EXCEPTION 'My text: xxx';
END
$do$;

但是 Redshift 不支持这一点。在 8.0.2 版本分叉后,它在很多方面都有所不同


0
投票

您可以创建一个过程,其名称表明它是临时的。然后您可以运行该过程,然后将其删除。

虽然不是最优的,但它可以运行程序代码以进行调试或一次性目的。

这将与创建同名过程的其他用户发生冲突。在下面的示例中,我使用了带有我姓名缩写的过程名称。

create or replace procedure mh_test()
as
$$
declare
  x float;
begin
<<Execute your code here>>
end;
$$
language plpgsql
;

call mh_test()
;

drop procedure mh_test();
;
© www.soinside.com 2019 - 2024. All rights reserved.