ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 行列转换sql

行列转换sql

原创 Linux操作系统 作者:paulyibinyi 时间:2008-02-20 09:08:15 0 删除 编辑

CREATE OR REPLACE TYPE TYPE_IN IS TABLE OF NUMBER;

 

CREATE OR REPLACE FUNCTION FUN_TO_T_IN (P_IN VARCHAR2) RETURN T_IN AS
V_RETURN T_IN DEFAULT T_IN();
V_IN VARCHAR2(32767);
V_COUNT NUMBER DEFAULT 0;
BEGIN
V_IN := REPLACE(P_IN || ',', CHR(10), '');
WHILE(INSTR(V_IN, ',') > 0) LOOP
V_RETURN.EXTEND;
V_COUNT := V_COUNT + 1;
V_RETURN(V_COUNT) := SUBSTR(V_IN, 1, INSTR(V_IN, ',') - 1);
V_IN := SUBSTR(V_IN, INSTR(V_IN, ',') + 1);
END LOOP;
RETURN V_RETURN;
END;

测试如下:

SQL> select * from table(select fun_to_t_in('1,2,3,4') from dual) ;
 
COLUMN_VALUE
------------
           1
           2
           3
           4

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7199859/viewspace-178865/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
学习数据库

注册时间:2007-12-11

  • 博文量
    902
  • 访问量
    6577221