select * from ab02 where aab001 in (select aab001 from ab01 )in 不能从数组中或变量中取值呢?必须从sql语句的返回值中得吗?

解决方案 »

  1.   

    怎么从变量中取啊? 只能是固定个数变量吧?
    像 in( str_a,str_b,str_c)这种吧?我的变量个数是不一定的
      

  2.   

    你可以先把in ()中的变成1个字符串,
    如果在存储过程中,可以如下:
    str:=str_a||','||str_b||','||str_c;
      

  3.   

    用动态SQL 应该可以做到!v_str='select * from table where table.name in(';loop
    --..从数组中取变量 a ,判断限制下当连接数组中第一个变量时不用 ||','
    v_str:=v_str||','||''''||a||'''';
    end loop ;v_str:=v_str||')';--拼好了完整的SQL语句 然后执行execute immediate  v_str;我测试了下,连接字符串是没问题的(9i环境)。SQL> select ','||''''||sysdate||''''  from dual;','||''''||SYSDATE||''''
    ------------------------
    ,'09-11月-07'
      

  4.   

    如果要得到查询结果 可以申请游标变量 
    直接
     open  cursor_name  for  v_str;
      

  5.   

    哈哈,应该用内存表来解决.
    动态sql,还要拼解析返回结果,再拼sql语句,麻烦