Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Calling pipelined table functions

437240Feb 24 2006 — edited Jul 11 2006
Hi,

I have created a table function with the below code.


CREATE TYPE str_tab_privs AS OBJECT
(org_id CHAR (10),
org_type_id CHAR (10));
/

CREATE TYPE str_tab_privs_table AS TABLE OF str_tab_privs;
/

CREATE or replace FUNCTION getOrgName (org CHAR)
RETURN str_tab_privs_table PIPELINED IS

TYPE ref0 IS REF CURSOR;
cur0 ref0;
v_org CHAR (10);
out_rec str_tab_privs := str_tab_privs (NULL, NULL);
BEGIN
v_org := org;

OPEN cur0 FOR
'SELECT org_id, org_type_id '||
'FROM org_link '||
'WHERE parent_id := v_org OR org_id = := v_org '
USING v_org;

LOOP
FETCH cur0 INTO out_rec.org_id, out_rec.org_type_id;
EXIT WHEN cur0%NOTFOUND;
PIPE ROW(out_rec);
END LOOP;

CLOSE cur0;
RETURN;
END getOrgName;
/

When I call the function I get these errors:

-- calling the function as system user:
SQL> select * from TABLE(getOrgName('MYORG'));
select * from TABLE(getOrgName('MYORG'))
*
ERROR at line 1:
ORA-00904: "GETORGNAME": invalid identifier

-- -- calling the function as schema owner:
SQL> select * from TABLE(getOrgName('MYOR'));
select * from TABLE(getOrgName('MYORG'))
*
ERROR at line 1:
ORA-00920: invalid relational operator
ORA-06512: at "TEST.GETORGNAME", line 11

Can anybody tell me how should I successfully call the function to retrieve the data from it? Any privilegies to be granted?

Thanks,

Paul
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 8 2006
Added on Feb 24 2006
14 comments
658 views