云数据库 GAUSSDB-重建包头不删除包体:示例

时间:2025-06-03 09:37:08

示例

-- 创建包头包体。
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

-- 重新创建包头。
CREATE OR REPLACE PACKAGE pkg_1 AS
var1 int;
var2 int;
var3 int;
PROCEDURE proc1;
END pkg_1;
/
CREATE PACKAGE

-- 查询状态,包体定义未被删除。
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)

-- 包体对象被置为无效。
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 PACKAGE pkg_1;
NOTICE:  drop cascades to function public.proc1()
DROP PACKAGE

-- 包头包体定义被删除。
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)
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-2000.html
提示

您即将访问非华为云网站,请注意账号财产安全