如何在不创建函数的情况下执行pl/pgsql代码?

Jer*_*hka 47 postgresql plpgsql

使用SQL Server,我可以通过SQL Server Management Studio或任何其他客户端使用完整的过程逻辑执行代码即席T-SQL代码.我已经开始使用PostgreSQL并且遇到了一些区别,因为PGSQL需要在函数中嵌入任何逻辑.

有没有办法在不创建执行函数的情况下执行PL/PGSQL代码?

cho*_*hki 62

Postgres 9

DO $$ 
-- declare
BEGIN
  /* pl/pgsql here */
END $$;
Run Code Online (Sandbox Code Playgroud)

  • 对于任何找到这个答案的人,只是为了得到"ERROR:语法错误或者接近"SELECT"",你需要一个BEGIN和END.DO $$ BEGIN/*pl/pgsql here*/END $$ (3认同)
  • 但是该代码如何返回查询结果?如果我在pl/pgsql部分中放入一个SELECT,我得到`错误:查询没有结果数据的目的地` (2认同)
  • @Igal:它不能.你不能从'DO`语句中返回任何内容.您可以引发通知或写入临时表或打开游标作为可能的解决方法. (2认同)

Fra*_*ens 6

还没有.版本9.0(仍然是alpha)将具有此选项(do),您必须等到它被释放.