我现在定义了一个函数:
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": 标识符无效
这些都是错误信息

解决方案 »

  1.   

    select * from (select GetChildPlace(1) from dual); 
    这样行不行
      

  2.   

    select * from (select GetChildPlace(1) from dual); 
    你说的这个可以用,但是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": 标识符无效
      

  3.   

    CSDN里面没高手了吗?谁帮我解决一下啊?
      

  4.   

    CSDN里面没高手了吗?谁帮我解决一下啊?
      

  5.   

    LZ注意言行,这是基础的问题,GOOGLE一下也就知道了。
    你可以把所有的操作+转换在存储过程代码实现,返回一个CURSOR输出参数就行了。
      

  6.   

    我现在能返回一个CURSOR,但是判断某个值是不是在这里面时会出错
    本人已经google过来,但是没得到想要的答案
      

  7.   

    返回CURSOR我已经实现的,但是就是不知道怎么判断某个书是不是在返回的CURSOR中
    我已经google过了,但是没找到我想要的答案