Oracle的package包主要用于组织归类相关的函数及存储过程,包的创建包括两分部:包的定义、包体的定义。
包的定义主要包括包名和包内函数、存储过程的声明,相当于API接口定义;
包体主要是包内各函数和存储过程的实现;
创建包体前必须先创建包。
包的定义:
CREATE OR REPLACE PACKAGE vastcm_utils IS
FUNCTION is_table_exists( table_name_to_check VARCHAR2) RETURN BOOLEAN;
END;
包体的定义:
CREATE OR REPLACE PACKAGE BODY vastcm_utils IS
FUNCTION is_table_exists( table_name_to_check VARCHAR2)
RETURN BOOLEAN IS
row_count NUMBER;
is_exists BOOLEAN;
BEGIN
SELECT count(*) INTO row_count
FROM dual
WHERE EXISTS
( SELECT * FROM user_tables WHERE table_name = upper(table_name_to_check) );
IF row_count = 0 THEN
is_exists := FALSE;
ELSE
is_exists := TRUE;
END IF;
RETURN is_exists;
END;
END;
包内函数的调用:
BEGIN
IF vastcm_utils.is_table_exists('t_pm_user') THEN
DBMS_OUTPUT.PUT_LINE('exists.');
ELSE
DBMS_OUTPUT.PUT_LINE('not exists.');
END IF;
END;