大致是这样的,
create or replace test(invalue in varchar2)
is
strsql varchar2(4000); 
beginstrsql := 'select * from mytable where a in (:invalue)';
execute immediate strsql using invalue; 
 
end test;
类似于这样的功能应该怎么实现啊,注意我的a 字段是字符型的,也就是说输入的可能会是'aaa','bbb'类似于这样的值,不知道用数组可不可以实现,各位多帮帮小弟忙,不胜感激 

解决方案 »

  1.   

    用动态SQL最简单了,否则要拆分字符串
      

  2.   

    看一下:http://www.oracle.com.cn/viewthread.php?tid=123823注意Oracle开发中的程序(procedure、function、trigger)要和界面中的应用程序(.net、c#、jsp)分开,不要搅到一起。
      

  3.   

    用动态SQL,用一个值接一下传进来得值,就可以了
    例如:如果invalue是'aa','bb'的形式的话
    inTempValue := invalue ;如果invalue是'aabbcc'的话就拆分字符串
      

  4.   

    谢谢这位大哥,我现在只是想写一个后台的plsql,不涉及到前台
      

  5.   

    FYI:问题14:
    http://topic.csdn.net/u/20081002/00/f8d90ba2-e2bb-412a-a0c5-1b6d518fc22a.html
      

  6.   

    问题是当传入的值是'aa','bb'的形式的话,我放到in()里面其中的,是不认的,也就是说我还是什么都查啊不出来啊,谢谢你的热心帮助
      

  7.   

    ORACLE会把它当成一个字符串值,所以要改成下面的形式:
    CREATE OR REPLACE TEST(INVALUE IN VARCHAR2) 
    IS 
       STRSQL VARCHAR2(4000); 
    BEGIN    STRSQL := 'SELECT * FROM MYTABLE WHERE A IN ('||INVALUE||')'; 
       EXECUTE IMMEDIATE STRSQL; END TEST;
      

  8.   


             vc_sql2 := 'insert into test_range(weidu,smallrang,bigrange,numcount,SUMCOUNT,pen,sumpen) 
             SELECT :vc_weidu' || ',
             to_char(' || i_init_range || ')' || ',to_char(' ||
                        (i_init_range + i_range) || ')
             ,COUNT(*)
             ,sum(' || vc_i_sumcount || ') 
             ,round(COUNT(*)/(' || i_count || '),4)*100 
             ,round(sum(' || vc_i_sumcount || ')/(' || i_sum ||
                        '),4)*100      
              from ' || temp_tablename || whsql || ' and round(' ||
                        vc_i_duliang || ') >= ' || i_init_range || ' 
             and round(' || vc_i_duliang || ')<=' ||
                        (i_init_range + i_range) || ' and ' || vc_i_dimension ||
                        '=:vc_weidu2 ';这是那个主要的SQL whsql里面是我的一些where条件,我现在主要要做的就是在里面再加入一个关于用到in或者exist这两个关键字的条件的筛选,但是碰到了很多的问题,怎么也走不通,不知道又没有人能给个解决方案,plsql里面这种传字符串实在是很不方便的。
      

  9.   

    谢谢 mantisXF 的帮助,做得有点太灵活了,有点晕了,就这么解决吧,就让用户直接输入'a','b'的形式了,原理是想就输a,b,c的,看来很麻烦先去结贴了,多谢