包没有问题
CREATE OR REPLACE PACKAGE "WYUSER"."F_MODEL" as
type m_cursor is ref cursor;
function MModelbrow(
id1 in number
) return m_cursor;
end;
包体提示ora-00942 表或视图不存在
CREATE OR REPLACE PACKAGE BODY "WYUSER"."F_MODEL" as
function MModelbrow(id1 in number)
return m_cursor IS
ACursor m_cursor;
l1 number;
strCreateTable varchar2(600);
BEGIN
l1:=0;
strCreateTable:='CREATE GLOBAL TEMPORARY TABLE
re (ID2 number,level2 number) ON COMMIT PRESERVE ROWS';
Execute immediate strCreateTable;
INSERT INTO RE values(id1,l1);
COMMIT;
open ACursor for select * from re;
return ACursor;
end MModelbrow;
end;
这两句报ora-00942 表或视图不存在
INSERT INTO RE values(id1,l1);
open ACursor for select * from re;
看了别人的函数调用数据集。人家是可以的呀。难道是权限问题。怎么解决呢?大虾们
CREATE OR REPLACE PACKAGE "WYUSER"."F_MODEL" as
type m_cursor is ref cursor;
function MModelbrow(
id1 in number
) return m_cursor;
end;
包体提示ora-00942 表或视图不存在
CREATE OR REPLACE PACKAGE BODY "WYUSER"."F_MODEL" as
function MModelbrow(id1 in number)
return m_cursor IS
ACursor m_cursor;
l1 number;
strCreateTable varchar2(600);
BEGIN
l1:=0;
strCreateTable:='CREATE GLOBAL TEMPORARY TABLE
re (ID2 number,level2 number) ON COMMIT PRESERVE ROWS';
Execute immediate strCreateTable;
INSERT INTO RE values(id1,l1);
COMMIT;
open ACursor for select * from re;
return ACursor;
end MModelbrow;
end;
这两句报ora-00942 表或视图不存在
INSERT INTO RE values(id1,l1);
open ACursor for select * from re;
看了别人的函数调用数据集。人家是可以的呀。难道是权限问题。怎么解决呢?大虾们
execeute immediate 'INSERT INTO RE values(id1,l1)';
但是
open ACursor for select * from re;
不行。用open ACursor for Execute immediate 'select * from re';肯定不行
re (ID2 number,level2 number) ON COMMIT PRESERVE ROWS函数里不能这样执行。
具体用时需要再改一下, 比如:
execeute immediate 'INSERT INTO RE values(:id1,:id2)' using id1,l1;
这句报错: PLS-00103: 出现符号 "EXECUTE"在需要下列之一时