Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> SELECT from a Nested Table - Need our help.

SELECT from a Nested Table - Need our help.

From: Mike <michaelloll_at_hotmail.com>
Date: 19 Feb 2003 13:13:12 -0800
Message-ID: <cba741c1.0302191313.2ee474a1@posting.google.com>


Hello, everyone. I have a question about SELECTing data from a nested table. I am running Oracle 9i. I am using a package that has one function which returns a variable of type TABLE, and one procedure which returns the rows from that table. My source code is below. My main problem is on this:

SELECT * FROM THE(SELECT CAST(deptList AS sa.PTG_ADMIN.DEPT_LIST) FROM DUAL); My function works fine, because I can put DBMS_OUTPUT statements in it and it will print out each row of the table variable. But I can't get the SELECT in my procedure to work correctly. Any help is much appreciated. Thanks!

--Mike Loll

p.s. Oh, you will notice the "SA" schema name ... this DB was migrated from SQL Server and it created the scheme name as "SA". Interesting, I guess. I plan on moving everything to a new schema name soon.

p.s.s. I am a complete Oracle newbie. :)

---
CREATE OR REPLACE PACKAGE "SA"."PTG_ADMIN"  as
 
  TYPE DEPT_LIST IS TABLE OF VarChar2(20);
  
  function makeDeptList(deptDelimList in varchar2, deliminator in
varchar2)
    return sa.PTG_admin.DEPT_LIST;
    
  procedure BudgetsNotInDeptList(deptDelimList in varchar2,
deliminator in varchar2);
  
end;

CREATE OR REPLACE  PACKAGE BODY "SA"."PTG_ADMIN"  as

FUNCTION makeDeptList

(
deptDelimList in varchar2, deliminator in varchar2 ) return SA.PTG_ADMIN.DEPT_LIST IS i integer; j integer; k integer; deptList DEPT_LIST; BEGIN i := 1; j := 1; k := 1; while k <= length(deptDelimList) loop j := instr(deptDelimList,deliminator,k,1); if j = 0 then begin deptList(i) := substr(deptDelimList,k, length(deptDelimList)); k := length(deptDelimList) + 1; end; else begin deptList(i) := substr(deptDelimList,k, (j- k)); k := j + 1; end; end if; i := i + 1; end loop; RETURN deptList; END MAKEDEPTLIST; procedure BudgetsNotInDeptList
(
deptDelimList in varchar2, deliminator in varchar2 ) IS deptList DEPT_LIST; begin deptList := makeDeptList('0,1,2,3,4,5,6,7,8,9,10', ','); SELECT * FROM THE(SELECT CAST(deptList AS sa.PTG_ADMIN.DEPT_LIST) FROM DUAL ); end BudgetsNotInDeptList; end;
Received on Wed Feb 19 2003 - 15:13:12 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US