CREATE OR REPLACE FUNCTION Emc_f_DoAgentMonitoring
RETURN BOOLEAN
IS
STR VARCHAR2(300);
BEGIN
STR:= CREATE GLOBAL TEMPORARY TABLE TTABLE (||
AID VARCHAR2(10),||
STIME DATE,||
ETIME DATE||
CYC NUMBER,||
TY_ NUMBER||
) ON COMMIT DELETE ROWS ;
EXECUTE IMMEDIATE STR;
INSERT INTO TTABLE VALUES(.....)
END Emc_f_DoAgentMonitoring;
我在TOAD编译的时候,出现必须说明标识符 TTABLE,请问各位怎么解决这个问题啊
我的ORACLE版本是8.1.5,多谢了
楼主粗心大意,建表字段少了一个逗号
CREATE OR REPLACE FUNCTION Emc_f_DoAgentMonitoring
RETURN BOOLEAN
IS
STR VARCHAR2(300);
BEGIN
STR:= CREATE GLOBAL TEMPORARY TABLE TTABLE (AID VARCHAR2(10),STIME DATE, ETIME DATE,CYC NUMBER,TY_ NUMBER) ON COMMIT DELETE ROWS ;
EXECUTE IMMEDIATE STR;
INSERT INTO TTABLE VALUES(.....)
return true;
exception
when others then
return false;
END Emc_f_DoAgentMonitoring;
/
瞧!我就是这么做的,在这个函数里定义的临时表在另一个过程里用的挺好!
FUNCTION CaMonths(
v_StartDate IN VARCHAR2,
v_EndDate IN VARCHAR2
) RETURN NUMBER AS
strCreateTable varchar2(500);
num varchar(2) default(0); --判断临时表是否建立的标识
Begin
select count(1) into num from all_all_tables where TABLE_NAME=upper(WATER_TempDate);
if num = 0 then
strCreateTable:=CREATE GLOBAL TEMPORARY TABLE WATER_TempDate
(id number(5),
StartDate VARCHAR(20),
EndDate VARCHAR(20)
)
ON COMMIT PRESERVE ROWS;
Execute immediate strCreateTable;--建表
end if;
INSERT INTO WATER_TempDate values(1,2003-06-23,2003-08-12);
COMMIT;
end;