PostgreSQL可以在过程中声明过程吗


create or replace procedure procedure_1()
language plpgsql
as $$ 
declare 
precedure procedure_2()
begin 
select 1;
end
begin
select 1;
end; $$

有什么方法可以在procedure_1()中声明procedure_2()吗?

-如果通过"声明";你的意思是";创建";。

CREATE OR REPLACE PROCEDURE procedure_1(INOUT result int)
LANGUAGE plpgsql AS
$proc1$
BEGIN
CREATE OR REPLACE PROCEDURE procedure_2(INOUT result int)
LANGUAGE plpgsql AS
$proc2$
BEGIN
result := 2;
END
$proc2$;

result := 1;
END
$proc1$;

db<gt;小提琴这里

你只需要正确地引用。参见:

  • 什么是'$$';用于PL/pgSQL
  • 在PostgreSQL中插入带单引号的文本

函数和过程不是";声明";,但是";创建";在Postgres。这将在数据库中创建一个对象,然后所有具有适当权限的人都可以看到该对象并使用该对象。(不仅仅是程序或事务本地的临时对象。(

然而,您可以创建一个";临时的";功能或过程;hack"-如果这就是你的想法:

  • 如何在PostgreSQL中创建临时函数

最新更新