云数据库 GAUSSDB-CREATE PACKAGE:示例

时间:2024-11-13 14:45:53

示例

  • CREATE PACKAGE示例
    --创建测试表tbl_test。
    gaussdb=# CREATE TABLE tbl_test(uid varchar(6) PRIMARY KEY, area_id varchar(5), level int);
    
    --创建包头。
    gaussdb=# 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; 
    /
    
    --创建包体。
    gaussdb=# 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的存储过程。
    gaussdb=# CALL pkg_test.proc_ist_tbl_test('0A00B1','01001',24);
    gaussdb=# SELECT * FROM tbl_test;
      uid   | area_id | level 
    --------+---------+---------
     0A00B1 | 01001   |      24
    (1 row)
    
    --使用SELECT调用PACKAGE的存储过程。
    gaussdb=# SELECT pkg_test.proc_upd_tbl_test('0A00B1','01001','26');
    gaussdb=# SELECT * FROM tbl_test;
      uid   | area_id | level 
    --------+---------+-------
     0A00B1 | 01001   |    26
    (1 row)
    
    --匿名块调用PACKAGE的存储过程。
    gaussdb=# BEGIN 
    pkg_test.proc_del_tbl_test('0A00B1'); 
    END; 
    /
    gaussdb=# SELECT * FROM tbl_test;
     uid | area_id | level 
    -----+---------+-------
    (0 rows)
    
    --删除。
    gaussdb=# DROP TABLE tbl_test;
    gaussdb=# DROP PACKAGE pkg_test;
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0559.html