我现在定义了一个函数:
create or replace function GetChildPlace(nid number)
return sys_refcursor
as
get_cur sys_refcursor;
begin
open get_cur for select id from tblplace
start with id=nid
connect by upid=prior id;
return get_cur;
end;
/我现在想要实现的给一个ID,怎么判断这个ID是不是我这个函数读出的表里面的。请问怎么实现?
SQL> select * from tbltest where placeid in (select GetChildPlace(1) from dual);
select * from tbltest where placeid in (select GetChildPlace(1) from dual)
*
第 1 行出现错误:
ORA-00932: 数据类型不一致: 应为 -, 但却获得 CURSER
SQL> select id from (select GetChildPlace(1) from dual);
select id from (select GetChildPlace(1) from dual)
*
第 1 行出现错误:
ORA-00904: "ID": 标识符无效
SQL> select ID from (select GetChildPlace(1) from dual);
select ID from (select GetChildPlace(1) from dual)
*
第 1 行出现错误:
ORA-00904: "ID": 标识符无效
这些都是错误信息
create or replace function GetChildPlace(nid number)
return sys_refcursor
as
get_cur sys_refcursor;
begin
open get_cur for select id from tblplace
start with id=nid
connect by upid=prior id;
return get_cur;
end;
/我现在想要实现的给一个ID,怎么判断这个ID是不是我这个函数读出的表里面的。请问怎么实现?
SQL> select * from tbltest where placeid in (select GetChildPlace(1) from dual);
select * from tbltest where placeid in (select GetChildPlace(1) from dual)
*
第 1 行出现错误:
ORA-00932: 数据类型不一致: 应为 -, 但却获得 CURSER
SQL> select id from (select GetChildPlace(1) from dual);
select id from (select GetChildPlace(1) from dual)
*
第 1 行出现错误:
ORA-00904: "ID": 标识符无效
SQL> select ID from (select GetChildPlace(1) from dual);
select ID from (select GetChildPlace(1) from dual)
*
第 1 行出现错误:
ORA-00904: "ID": 标识符无效
这些都是错误信息
这样行不行
你说的这个可以用,但是select id from (select GetChildPlace(1) from dual); 却不行。但是我给出一个ID你怎么判断在不在这里面呢?SQL> select id from (select GetChildPlace(1) from dual);
select id from (select GetChildPlace(1) from dual)
*
第 1 行出现错误:
ORA-00904: "ID": 标识符无效
你可以把所有的操作+转换在存储过程代码实现,返回一个CURSOR输出参数就行了。
本人已经google过来,但是没得到想要的答案
我已经google过了,但是没找到我想要的答案