针对不能重复执行的SQL,如创建表,创建雾化视图等前面增加判断条件
一、创建表之前判断是否已经存在,存在就DROP掉,不存在就直接创建
DECLARE
T_NUM PLS_INTEGER := 0;
BEGIN
SELECT COUNT(1) INTO T_NUM FROM USER_TABLES WHERE TABLE_NAME = UPPER('SYS_LOGS') ;
IF T_NUM > 0 THEN
EXECUTE IMMEDIATE 'DROP TABLE SYS_LOGS' ;
END IF;
END;
/
*PLS_INTEGER 可以存储一个有符号的整形值,其精度范围和BINARY_INTEGER一样,是:-2^31~2^31。
PLS_INTEGER和NUMBER比较起来,其优点是:
1).占有较少的存储空间;
2).可以直接进行算术运算,效率更高(在NUMBER上不能直接进行算术运算,如果要计算,NUMBER必须先被转换成二进制)。
二、创建雾化视图(MATERIALIZED VIEW)前,先判断是否存在,存在就先删除。
declare
T_NUM pls_integer := 0;
begin
select count(1)
into T_NUM
from user_mviews
where mview_name = 'V_M_TEST';
if T_NUM = 1 then
execute immediate 'drop MATERIALIZED VIEW V_M_TEST';
commit;
end if;
end;
/

浙公网安备 33010602011771号