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中创建临时函数