如,传进来一个字符串'11,12,13,14',',','33','34'.其中,11,12,13,14是well_id的值,33,34是另一个字段的值。
想要如下结果
11
12
13
14
33
34
该怎么实现呀?
现在只会截取
11
12
13
14
代码:
CREATE TYPE my_tbl_type AS OBJECT(engineid VARCHAR2(20));CREATE OR REPLACE TYPE myTableType as TABLE OF my_tbl_type;
--建立嵌套表类型myTableType,基于对象类型my_tbl_type定义,以包含多个engineid信息。--将字付串转化为表
CREATE OR REPLACE FUNCTION str2tbl(p_str IN VARCHAR2) RETURN myTableType
AS
l_str VARCHAR2(1000):=p_str||',';
l_n NUMBER;
l_data myTableType:=myTableType();
BEGIN
LOOP
l_n:=instr(l_str,',');
EXIT WHEN (NVL(l_n,0)=0);
l_data.extend;
l_data(l_data.count):=my_tbl_type(SUBSTR(l_str,1,l_n-1));
l_str:=SUBSTR(l_str,l_n+1);
END LOOP;
RETURN l_data;
END;
--示例应用
var aaa varchar2(1000)
exec :aaa:='11,12,13,14'
select * from table(cast(str2tbl(:aaa) as myTableType));
11
12
13
14后面的不知道该怎么弄了。
请大侠帮帮忙!
想要如下结果
11
12
13
14
33
34
该怎么实现呀?
现在只会截取
11
12
13
14
代码:
CREATE TYPE my_tbl_type AS OBJECT(engineid VARCHAR2(20));CREATE OR REPLACE TYPE myTableType as TABLE OF my_tbl_type;
--建立嵌套表类型myTableType,基于对象类型my_tbl_type定义,以包含多个engineid信息。--将字付串转化为表
CREATE OR REPLACE FUNCTION str2tbl(p_str IN VARCHAR2) RETURN myTableType
AS
l_str VARCHAR2(1000):=p_str||',';
l_n NUMBER;
l_data myTableType:=myTableType();
BEGIN
LOOP
l_n:=instr(l_str,',');
EXIT WHEN (NVL(l_n,0)=0);
l_data.extend;
l_data(l_data.count):=my_tbl_type(SUBSTR(l_str,1,l_n-1));
l_str:=SUBSTR(l_str,l_n+1);
END LOOP;
RETURN l_data;
END;
--示例应用
var aaa varchar2(1000)
exec :aaa:='11,12,13,14'
select * from table(cast(str2tbl(:aaa) as myTableType));
11
12
13
14后面的不知道该怎么弄了。
请大侠帮帮忙!
解决方案 »
- 求一条sql语句:可以合并上面3个表,变成下面的table123
- 如何做交叉表.
- 昨天的面试的一道笔试题
- 请问大家一个通过一张表更新另一张表的问题,大家帮帮忙啊
- Hibernate使用Sequence向Oracle中插入数据报错
- ASP.NET+oracle数据库,偶尔报ORA-03113: 通信通道的文件结尾 进程错误 [问题点数:100分]
- 关于sqlplus的问题
- 高分求教PL/SQL Developer有没有版本控制器插件!!
- 关于并发控制技术问题
- 请教:哪种ORACLE8i的OO建模工具好用?
- 只有数据文件,如何恢复
- arcsde10 for oracle10g /oracle11g 下载
11 33
11 34
12 33
12 34
13 33
14 34.