求教各位老大帮我看下这个存储过程的错误如何避免,叩谢!
问题在下面代码的红字部分
如果P0100表存在的话,这段存储过程是正确运行的。
但是如果P0100表本来不存在,这段存储过程就会报错“该表不存在”,不明白为什么它不是先运行我前面创建表的部分,而是先检验代码有效性。
请问各位大哥,如何改进代码可以解决这个问题,非常感谢!
create or replace procedure P001 is
begin
IF GET_OBJECT_CNT('P0100','TABLE')=0 --如果该表不存在
THEN
---建立一张新表P0100
EXECUTE IMMEDIATE
'
CREATE TABLE P0100
(
PARENTL NVARCHAR2(60) not null,
ENTITYL NVARCHAR2(60) not null,
C2L NVARCHAR2(60) not null,
ACCOUNTL NVARCHAR2(60) not null,
VALUEL NVARCHAR2(60) not null,
DDATA FLOAT
)
tablespace EPM
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
)
';
-- Create Index
EXECUTE IMMEDIATE
'
CREATE INDEX P0100ind00 ON P0100 (PARENTL,EntityL,C2L,ACCOUNTL,VALUEL)
';
ELSIF GET_OBJECT_CNT('P0100','TABLE')=1 --如果该表存在
THEN
EXECUTE IMMEDIATE
'
Truncate TABLE P0100
';
END IF;
--Insert Records
INSERT INTO P0100
SELECT PARENTID,EntityID,Custom2ID,ACCOUNTID,VALUEID,DDATA
FROM P01_fact;
COMMIT;
end P001;