大致是这样的,
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'类似于这样的值,不知道用数组可不可以实现,各位多帮帮小弟忙,不胜感激
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'类似于这样的值,不知道用数组可不可以实现,各位多帮帮小弟忙,不胜感激
例如:如果invalue是'aa','bb'的形式的话
inTempValue := invalue ;如果invalue是'aabbcc'的话就拆分字符串
http://topic.csdn.net/u/20081002/00/f8d90ba2-e2bb-412a-a0c5-1b6d518fc22a.html
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;
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里面这种传字符串实在是很不方便的。