【发布时间】:2019-01-29 14:51:01
【问题描述】:
我有 170 个 Alter Drop Constraint 语句、120 个 Truncate table、120 个 Insert 表和 170 个 Alter Add Constraint。所有这些都应该作为批处理脚本在一个脚本中运行,我正在使用 PGADMIN IV 工具。
尝试像 Oracle 一样在 Begin 和 End 之间执行它们,
BEGIN
ALTER Statement1..,, ;
ALTER Statement2..,, ;
TRUNCATE Statement3..,, ;
TRUNCATE Statement4..,, ;
INSERT Statement5..,, ;
INSERT Statement6..,, ;
COMMIT;
ALTER Statement7..,, ;
ALTER Statement8..,, ;
---
-----
-------
---------
COMMIT;
END;
但它不起作用,
有人可以就我如何做到这一点提出建议吗?
【问题讨论】:
-
每条语句后都需要
;,而不是,,最后需要COMMIT;或ROLLBACK;,end;仅在PL/pgSQL中有效,而不是在 SQL 中(在 Oracle 中也是如此 -
是的,我这样做了,但不幸的是忘记在这里发布,我现在正在编辑它!据我了解,我们不能在 Postgres 的 BEGIN 和 END 子句之间运行 SQL 语句,而是自己编写所有 SQL 并一次选择所有内容并相应地运行。这里我说的是在 PGADMIN IV 工具而不是 PSQL 中运行。但是现在我只是在寻找一种解决方法,如果可能的话,是否有任何其他替代方法可以在 PG ADMIN TOOL 中使用 PL/PGSQL 将所有 SQL 作为一个批次运行。请纠正我,如果我在这里错了,?
-
如果您正在寻找相当于 Oracle 的匿名 PL/SQL 块,那么您可能正在寻找
do命令 -
好的,但是如果我需要使用 PGADMIN 工具在 Postgres 中批量运行三个 select 语句,您能告诉我如何完成吗?
-
对不起,我不使用 pgAdmin