利用对象类型通过字符串分析出数据函数:
create or replace type mytabletype as table of number;
/create or replace function strtab(p_str in varchar2)
return mytabletype
as
lstr varchar2(1000) default p_str||',';
ln number;
ldata mytabletype:=mytabletype();
begin
loop
ln:=instr(lstr,',');
exit when (nvl(ln,0)=0);
ldata.extend;
ldata(ldata.count):=ltrim(rtrim(substr(lstr,1,ln-1)));
lstr:=substr(lstr,ln+1);
end loop;
return ldata;
end;
/测试:
SQL> select * from table(cast(strtab('11,12,13') as mytabletype));COLUMN_VALUE
------------
11
12
13
create or replace type mytabletype as table of number;
/create or replace function strtab(p_str in varchar2)
return mytabletype
as
lstr varchar2(1000) default p_str||',';
ln number;
ldata mytabletype:=mytabletype();
begin
loop
ln:=instr(lstr,',');
exit when (nvl(ln,0)=0);
ldata.extend;
ldata(ldata.count):=ltrim(rtrim(substr(lstr,1,ln-1)));
lstr:=substr(lstr,ln+1);
end loop;
return ldata;
end;
/测试:
SQL> select * from table(cast(strtab('11,12,13') as mytabletype));COLUMN_VALUE
------------
11
12
13
解决方案 »
- 为何like执行速度比=要快得多!?
- 当oracle数据改变时,如何获取改变的内容
- OMS登录问题,重新配置,选择使用现有资料档案库问题。。。
- 存储过程向其中的游标传值的难解问题,单独执行可以取到数据,而放在存储过程中进行传值取不到数据
- 初学者问题:要在自己的机上安装pl/sql developer连服务器的oracle9i,要先装什么?oracle9i客户端吗?
- oracle 下载问题
- 请教:一个SQL的长句——麻烦高手帮忙看看
- 取出的记录有重复!对重复记录进行唯一约束的函数???
- 送分!帮个忙,我要在oracle里建个表,book(id,name,price),但是要id是自动增长!
- 请教个oracle里排序的问题,不知是否能实现
- 因函数中的死循环,我该如何解锁呢?
- 求助:如何判断一条SQL语句执行了没有?
-- ----------
11 张三
12 李四
13 王五
i pls_integer;
j pls_integer;
str varchar2(100);
type tarr is varray(100) of number;
arr tarr:=tarr();
rec emp%rowtype;
begin
i:=0;
str:=content;
loop
j:=instr(str,',');
arr.extend;
i:=i+1;
if j<=0 then
arr(i):=str;
else
arr(i):=substr(str,1,j-1);
str:=substr(str,j+1);
end if; exit when j<=0;
end loop;
for i in arr.first..arr.last loop
select * into rec from emp where employee_id=arr(i);
dbms_output.put_line(rec.employee_id||' '||rec.first_name);
end loop;
end;