表table1中有个字段field1,类型是varchar2(32000)
存储的内容是aaa,bbb,ccc,ddd,eee 这样的数据(逗号分隔)
现在想要实现的功能是:
把aaa 、bbb、ccc、ddd随机顺序后仍旧用逗号分隔存到field2字段中如开始是aaa,bbb,ccc,ddd
存储后变成 ccc,bbb,ddd,aaa
或者 bbb,ddd,aaa,ccc 我在Collection Types里做了个定义
type Varchar20064 is table of varchar2(64)然后增加了一个函数(比较长,放在下面),测试时提醒这行有错误
大致意思应该是:没有创建该对象或者没有实例化就使用了请问如何解决这个问题,或者有没别的实现思路
存储的内容是aaa,bbb,ccc,ddd,eee 这样的数据(逗号分隔)
现在想要实现的功能是:
把aaa 、bbb、ccc、ddd随机顺序后仍旧用逗号分隔存到field2字段中如开始是aaa,bbb,ccc,ddd
存储后变成 ccc,bbb,ddd,aaa
或者 bbb,ddd,aaa,ccc 我在Collection Types里做了个定义
type Varchar20064 is table of varchar2(64)然后增加了一个函数(比较长,放在下面),测试时提醒这行有错误
大致意思应该是:没有创建该对象或者没有实例化就使用了请问如何解决这个问题,或者有没别的实现思路
RETURN Varchar20064 IS
tmpString varchar2(32000);
subString varchar2(64);
tmpCurPlace number(18,0);
tmpCounter number(18,0);
tblString Varchar20064;
BEGIN
if (x is null) then
return tblString;
end if;
tmpString := x;
if (separator is null) then
return tblString;
end if;
tmpCounter := 0;
tmpCurPlace := instr(tmpString,separator);
while (tmpCurPlace > 0)
loop
subString := substr(tmpString,1,tmpCurPlace-1);
tblString(tmpCounter) := subString; --出错的行
tmpCounter := tmpCounter + 1;
tmpString := substr(tmpString,tmpCurPlace + length(separator),length(tmpString));
tmpCurPlace := instr(tmpString,separator);
end loop;
subString := tmpString;
tblString(tmpCounter) := subString;
return tblString;
END SplitString;
/
============================================
技术交流不该有界限 资源共享不该有条件
http://blog.csdn.net/lovingkiss
http://download.csdn.net/user/lovingkiss
Email:loving-kiss@163.com
本人说明:<我的帖子我做主>
1、欢迎一切问题有关的交流——无论答案对错;
2、不欢迎 顶、Mark、支持之类口水混分的人;
我保留对非<散分贴>蹭分者的厌恶和鄙视...
============================================
不过主要的东西 可以 读取出数据
在如dataset中 进行随机排序后
写回field2更好吧
http://download-west.oracle.com/docs/cd/B19306_01/appdev.102/b14261/collections.htm#i20479在存储过程里实现,少两次远程交互,我的目的就是这个。放程序里实现还用跑来这里问?
tblString(tmpCounter - 1) := subString;
就行了下标越界