更新时间:2025-05-29 GMT+08:00
重编译
通过函数调用或者ALTER COMPILE语法可以将失效的存储过程、函数和包重编译为有效。
示例
CREATE OR REPLACE FUNCTION func1 RETURN INT AS BEGIN RETURN 1; END; / CREATE FUNCTION CREATE OR REPLACE PACKAGE pkg IS PROCEDURE proc1(); END pkg; / CREATE PACKAGE CREATE OR REPLACE PACKAGE BODY pkg IS PROCEDURE proc1() AS BEGIN RAISE INFO 'proc1'; END; END pkg; / CREATE PACKAGE BODY -- 运行失效重编译高级包。 CALL pkg_util.gs_compile_schema('public', false, 1); -- 执行结果。 INFO: successful gs_compile_schema ------------------- (1 row) -- 查询状态。 SELECT proname,valid FROM pg_object obj JOIN pg_proc proc ON obj.object_oid = proc.oid AND proname = 'func1' AND propackageid = 0; proname | valid ---------+------- func1 | t (1 row) SELECT pkgname,object_type,valid FROM pg_object obj JOIN gs_package pkg ON obj.object_oid = pkg.oid AND pkgname = 'pkg'; pkgname | object_type | valid ---------+-------------+------- pkg | S | t pkg | B | t (2 rows) -- 执行函数。 SELECT func1(); func1 ------- 1 (1 row) CALL pkg.proc1(); INFO: proc1 proc1 ------- (1 row) -- 删除已创建的对象。 DROP FUNCTION func1; DROP FUNCTION DROP PACKAGE pkg; NOTICE: drop cascades to function public.proc1() DROP PACKAGE
父主题: 失效重编译