云数据库 GAUSSDB-CREATE PACKAGE:示例

时间:2024-11-13 14:46:54

示例

  • CREATE PACKAGE示例
    --创建数据库。
    gaussdb=# CREATE DATABASE test DBCOMPATIBILITY 'ORA';
    gaussdb=# \c test
    
    --创建测试表tbl_test。
    test=# CREATE TABLE tbl_test(uid varchar(6) PRIMARY KEY, area_id varchar(5), level int);
    
    --创建包头。
    test=# CREATE OR REPLACE PACKAGE pkg_test AS 
        --公有存储过程可以被外部调用。
        PROCEDURE proc_ist_tbl_test(v_uid in varchar, v_area_id varchar, v_level int);  
        PROCEDURE proc_del_tbl_test(v_uid in varchar);
        PROCEDURE proc_upd_tbl_test(v_uid in varchar, v_area_id varchar, v_level int);
    END pkg_test; 
    /
    
    --创建包体。
    test=# CREATE OR REPLACE PACKAGE BODY pkg_test AS 
        PROCEDURE proc_ist_tbl_test(v_uid in varchar, v_area_id varchar, v_level int) AS
        BEGIN
            INSERT INTO tbl_test VALUES (v_uid, v_area_id, v_level);
        END;    
        PROCEDURE proc_del_tbl_test(v_uid in varchar) AS 
        BEGIN 
            DELETE FROM tbl_test WHERE uid = v_uid;
        END;
        PROCEDURE proc_upd_tbl_test(v_uid in varchar, v_area_id varchar, v_level int) AS
        BEGIN 
            UPDATE tbl_test SET area_id = v_area_id, level = v_level WHERE uid = v_uid;
        END;
        var4 int := 10;
        --实例化开始。
    BEGIN 
        var4 := 10;
        dbe_output.print_line(var4);
    END pkg_test; 
    /
  • 调用PACKAGE示例
    --使用CALL调用PACKAGE的存储过程。
    test=# CALL pkg_test.proc_ist_tbl_test('0A00B1','01001',24);
    test=# SELECT * FROM tbl_test;
      uid   | area_id | level 
    --------+---------+---------
     0A00B1 | 01001   |      24
    (1 row)
    
    --使用SELECT调用PACKAGE的存储过程。
    test=# SELECT pkg_test.proc_upd_tbl_test('0A00B1','01001','26');
    test=# SELECT * FROM tbl_test;
      uid   | area_id | level 
    --------+---------+-------
     0A00B1 | 01001   |    26
    (1 row)
    
    --匿名块调用PACKAGE的存储过程。
    test=# BEGIN 
    pkg_test.proc_del_tbl_test('0A00B1'); 
    END; 
    /
    test=# SELECT * FROM tbl_test;
     uid | area_id | level 
    -----+---------+-------
    (0 rows)
    
    --删除。
    test=# DROP TABLE tbl_test;
    test=# DROP PACKAGE pkg_test;
    --切换至默认数据库并删除test数据库(请根据实际情况修改数据库名)。
    test=# \c postgres
    gaussdb=# DROP DATABASE test;
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0556.html