数据访问层的的函数声明如下:
void LoadProjectListByListID(IList<decimal> IDList,out DataSet projectListDS);要写一个存储过程,通过IDList中的数据查询得到结果projectListDS。
其中IDList中有几万个数值,为了提高速度,可以先把IDList转换成一个很长的字符串作为存储过程的输入参数,然后再在数据库中还原成数值,但是数据库中没有这么大的字符串,该怎么办?
是否有更好的解决办法?请高手指教!!
void LoadProjectListByListID(IList<decimal> IDList,out DataSet projectListDS);要写一个存储过程,通过IDList中的数据查询得到结果projectListDS。
其中IDList中有几万个数值,为了提高速度,可以先把IDList转换成一个很长的字符串作为存储过程的输入参数,然后再在数据库中还原成数值,但是数据库中没有这么大的字符串,该怎么办?
是否有更好的解决办法?请高手指教!!
RETURN ty_str_split
IS
j INT := 0;
i INT := 1;
len INT := 0;
len1 INT := 0;
str VARCHAR2 (4000);
str_split ty_str_split := ty_str_split ();
BEGIN
len := LENGTH (p_str);
len1 := LENGTH (p_delimiter); WHILE j < len
LOOP
j := INSTR (p_str, p_delimiter, i); IF j = 0
THEN
j := len;
str := SUBSTR (p_str, i);
str_split.EXTEND;
str_split (str_split.COUNT) := str; IF i >= len
THEN
EXIT;
END IF;
ELSE
str := SUBSTR (p_str, i, j - i);
i := j + len1;
str_split.EXTEND;
str_split (str_split.COUNT) := str;
END IF;
END LOOP; RETURN str_split;
END fn_split;