我有一个简单的查询象下面这样:如何使用Oracle软件包摆脱全局临时表
INSERT INTO my_gtt_1 (fname, lname) (select fname, lname from users)
在我的努力来摆脱临时表我创建了一个包:
create or replace package fname_lname AS
Type fname_lname_rec_type is record (
fname varchar(10),
lname varchar(10)
);
fname_lname_rec fname_lname_rec_type
Type fname_lname_tbl_type is table of fname_lname_rec_type;
function fname_lname_func
(
v_fnam in varchar2,
v_lname in varchar2
)return fname_lname_tbl_type pipelined;
是oracle的新手......创建这个包需要很长时间。但现在我无法弄清楚如何摆脱my_gtt_1
怎么说呢......
INSERT INTO <newly created package> (select fnma, name from users)
你现在怎么使用临时表,为什么你想摆脱它?在这种非常简单的情况下,你可能会比较好看,但这可能并不总是合适的。但是我不确定这个软件包会做你想做的事 - 就像APC所说的那样,你只能在你使用它的时候传入一组值。您目前也不会对传递的值做任何事情。这听起来像你希望函数在用户表上执行查询并返回一个保存结果的PL/SQL表,而不是有一个SQL临时表。 – 2010-06-14 16:34:59
你也应该看看这个,这解释了它比我所能做的更好:http://stackoverflow.com/questions/2918466/ – 2010-06-14 16:43:45