Help Center/ GaussDB/ Developer Guide(Centralized_V2.0-8.x)/ Stored Procedure/ Recompilation upon Expiration/ Re-creating the Package Header Without Deleting the Package Body
Updated on 2025-08-19 GMT+08:00
Re-creating the Package Header Without Deleting the Package Body
The package body definition is not deleted when the package header is re-created.
Examples
-- Create a package header and body.
CREATE OR REPLACE PACKAGE pkg_1 AS
var1 int;
var2 int;
PROCEDURE proc1;
END pkg_1;
/
CREATE PACKAGE
CREATE OR REPLACE PACKAGE BODY pkg_1 AS
PROCEDURE proc1 AS
BEGIN
var1 := var1 + var2;
END;
END pkg_1;
/
CREATE PACKAGE BODY
-- Re-create the package header.
CREATE OR REPLACE PACKAGE pkg_1 AS
var1 int;
var2 int;
var3 int;
PROCEDURE proc1;
END pkg_1;
/
CREATE PACKAGE
-- Query the status and verify that the package body definition is not deleted.
SELECT * FROM gs_package WHERE pkgname='pkg_1';
pkgnamespace | pkgowner | pkgname | pkgspecsrc | pkgbodydeclsrc | pkgbodyinitsrc | pkgacl | pkgsecdef
--------------+----------+---------+--------------------+----------------------+----------------+--------+-----------
2200 | 10 | pkg_1 | PACKAGE DECLARE +| PACKAGE DECLARE +| | | f
| | | var1 int; +| procedure proc1 as +| | |
| | | var2 int; +| begin +| | |
| | | var3 int; +| var1 := var1 + var2;+| | |
| | | procedure proc1; +| end; +| | |
| | | end | end | | |
(1 row)
-- The package body object is set to invalid.
SELECT * FROM pg_object WHERE object_oid = (SELECT oid FROM gs_package WHERE pkgname='pkg_1');
object_oid | object_type | creator | ctime | mtime | createcsn | changecsn | valid
------------+-------------+---------+-------------------------------+-------------------------------+-----------+-----------+-------
171138 | B | 10 | 2024-12-31 16:50:29.923577+08 | 2025-01-17 15:56:42.271533+08 | | 183936 | f
171138 | S | 10 | 2024-12-24 16:09:29.527485+08 | 2025-01-17 15:56:42.271533+08 | | 183936 | t
(2 rows)
-- Drop a created object.
DROP PACKAGE pkg_1;
NOTICE: drop cascades to function public.proc1()
DROP PACKAGE
-- The definitions of the package header and body are deleted.
SELECT * FROM gs_package WHERE pkgname='pkg_1';
pkgnamespace | pkgowner | pkgname | pkgspecsrc | pkgbodydeclsrc | pkgbodyinitsrc | pkgacl | pkgsecdef
--------------+----------+---------+------------+----------------+----------------+--------+-----------
(0 rows)
SELECT * FROM pg_object WHERE object_oid = (SELECT oid FROM gs_package WHERE pkgname='pkg_1');
object_oid | object_type | creator | ctime | mtime | createcsn | changecsn | valid
------------+-------------+---------+-------+-------+-----------+-----------+-------
(0 rows) Parent topic: Recompilation upon Expiration
What is your overall rating for this page?
0
1
2
3
4
5
6
7
8
9
10
Very dissatisfiedVery satisfied
Thank you very much for your feedback. We will continue working to improve the documentation.
The system is busy. Please try again later.