有表node表swimlane表schema代表流程
想查出当前流程 当前泳道的节点node sql语句为  select n.id from node n where n.swimlane_id in(select t.id from swimlane t where t.schema_id='vProcessId'); 返回是list 问题在于想对结果集存操作。用游标的话后面怎么将游标作为输入参数 

解决方案 »

  1.   

    用什么游标
    insert into 表(字段1,字段2...) select *1,*2 .....from .....
      

  2.   


    为什么要修改表结构,select 又不是只能查询一个表,又不是只能查询*
      

  3.   

    insert哪个表呢 node表?还是再建个表?
      

  4.   

    从里面再查询数据nodetype =‘start’
    再以查出的id在表line中作为startid查询endid
    再在查出的结果集中查出id为endid的节点再作为startid
      

  5.   

    那就继续子查询就好了,把你那条SQL做为一个视图来看待。
    select * from 
    (
    select n.id from node n where n.swimlane_id in(select t.id from swimlane t where t.schema_id='vProcessId')
    ) as T
    where t......
      

  6.   

    我最初是想用视图 可是返回的是list 视图可以返回list吗?
    后来我就想分开写成函数再分别调用 可也是因为返回list并对list操作就不会弄了
      

  7.   

    偶数据库编程用的比较少,不是很理解楼主所说的list是什么概念?
    按照我的理解,楼主在代码中生成一个查询结果集,也就是你的那条SQL。
    然后将这条SQL传递给需要使用的代码段就可以了,在里对接收到的SQL进行游标处理就可以了。
      

  8.   

    function getSwimLaneByProcessId(vProcessId varchar2) return  sys_refcursor as
    返回游标 想用function 2使用返回值作为参数 
    c_id sys_refcursor :=getSwimLaneByProcessId(vProcessId varchar2);想这样的 不过这样写报错 不知道正确的该怎么写
      

  9.   

    显式调用 用fetch into 变量
    隐式调用 用游标变量.列名不过还是不知道你想做什么。
      

  10.   

    就是function1返回游标 函数2使用的话怎么从1中取出里面的属性
      

  11.   

    我测试建了两个函数,没有出现什么问题,不知道楼主是在哪里被卡住了。我建的函数代码如下:
    -- 函数1
    create or replace function funTemp return SYS_REFCURSOR
    IS
        v_rc SYS_REFCURSOR;
        begin
            open v_rc for select * from t_test;
            return (v_rc);
    end funTemp;-- 函数2,入参数函数1的返回类型
    create or replace function funtmp2(cur SYS_REFCURSOR) return SYS_REFCURSOR
    is
    begin
        return cur;
    end funtmp2;
      

  12.   

    我想在function2中使用1的返回值
      

  13.   

    完全没问题啊create or replace function funtmp3 return varchar
    is
    cur sys_refcursor;
    cur2 sys_refcursor;
    begin
      cur := funtemp();
      cur2:= funtmp2(cur);
        return '';
    end funtmp3;