写了一个函数getSingleColumn(v_sql),接受一个结果集为单列的sql,返回该结果集为逗号分割的字符串.
例如查出的一列是1列5行((a),(b),(c),(d),(e))就转化成 ((a,b,c,d,e));
实际是'a,b,c,d,e'现在需要写这么一个sql
select t.* from table_t t
where t.id[主键] in ('a','b','c','d','e');in括号中的字符序列,怎么能根据 'a,b,c,d,e'得出呢.
并且要自然的连接到sql中.我开始想先把整个sql转化成字符串再调用执行.这样的话,之需要简单处理字符串连接即可.但转成字符串的sql,怎么再在sql中调用?如何处理,请赐教!

解决方案 »

  1.   

    可以考虑动态sql的v_var varchar2(2000) := '''a'',''b'',''c'',''d'',''e''';
    execute immediate 'select t.* from table_t t where t.id in ('||v_ar||');
      

  2.   


    同意shiyiwan的方法to LZ
    怎么不直接用表关联叻。
      

  3.   

    谢谢两位! 
    如果是在trigger里面,
    IF :NEW.ID in ('a','b','c','d','e')
     THEN [next....]
    现在红色的部分能动态替换吗?
      

  4.   

    不用表关联是因为 和上面约定了一个接口,把ID字符串数列存入成了字段.剩下的人去做展示的时候直接用这些ID了.