报错
select wm_concat(job_id)-- 10g
into v_job_id_strfrom ne_job_element
where event_id is null
and ne_id = p_neId;
open cur_job for
-- execute immediate sql_str;
select j.*
from ne_job j
where j.job_id in ( v_job_id_str ) ;
Loop
fetch cur_job into r_job;
exit when cur_job%notfound;
dbms_output.put_line('-----'||cur_job%rowcount );
end loop;
close cur_job;
INSTR (源字符串, 目标字符串, 起始位置, 匹配序号)
在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始到字符的结尾就结束。
语法如下: instr( string1, string2 [, start_position [, nth_appearance ] ] )
参数分析: string1 源字符串,要在此字符串中查找。
string2 要在string1中查找的字符串.
start_position 代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
nth_appearance 代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。
open cur_job for
-- execute immediate sql_str;
select j.*
from ne_job j
where instr(',' || v_job_id_str || ',' , ',' || j.job_id || ',') > 0;
Loop
fetch cur_job into r_job;
exit when cur_job%notfound;
dbms_output.put_line('-----'||cur_job%rowcount );
end loop;
close cur_job;
解决方法参考:
关于pl/sql中存储过程传入数值参数时进行按逗号分割的方法——Oracle 前两天写存储过程,需要用到多参数传入,传入的参数是给一个select语句的where条件使用的。