zoukankan      html  css  js  c++  java
  • 逗号分隔的字符串转换为行数据(collection)(续)

    逗号分隔的字符串转行数据的存储过程一个:

    CREATE OR REPLACE FUNCTION SP_YX_SPLIT
    (
        p_list CLOB, 
        p_sep VARCHAR2 := ','
    ) 
    RETURN tabletype
    PIPELINED 
    /************************************** 
    * Name: split 
    * Author: zhaoqiang. 
    * Date: 2014-10-03. 
    * Function: 返回字符串被指定字符分割后的表类型。 
    * Parameters: p_list: 待分割的字符串。 
    p_sep: 分隔符,默认逗号,也可以指定字符或字符串。 
    * Example: SELECT * 
    FROM users 
    WHERE u_id IN (SELECT COLUMN_VALUE 
    FROM table (split ('1,2'))) 
    返回u_id为1和2的两行数据。 
    **************************************/ 
    IS 
        l_idx PLS_INTEGER; 
        v_list VARCHAR2 (32676) := p_list; 
        BEGIN 
        LOOP 
        l_idx := INSTR (v_list, p_sep); 
        IF l_idx > 0 
        THEN 
        PIPE ROW (SUBSTR (v_list, 1, l_idx - 1)); 
        v_list := SUBSTR (v_list, l_idx + LENGTH (p_sep)); 
        ELSE 
        PIPE ROW (v_list); 
        EXIT; 
        END IF; 
        END LOOP; 
    END;

    2,调用存储过程方法,获取转化后的行数据(collection)

    select SP_YX_SPLIT('2,43,43,43',',') from dual

    打开Collection,可看到是这个字段是一个只有一列的列名为COLUMN_VALUE的表。

    3,得到的这个值,因为是collection,不能直接使用。例如:

    4,所以必须先把这个语句转化成Table类型。然后,当作一个表Table使用,通过COLUMN_VALUE获取里面的值。

    5,使用表,获取值。

    where gs.movetypeid='201' and gs.createdate between '20161203' and '20161203'   
    and gs.customerid='00010'
    and m1.materialsortid in (SELECT COLUMN_VALUE FROM table ((select SP_YX_SPLIT('00000000000000001283,00000000000000000714',',') from dual)))
  • 相关阅读:
    移动端阻止事件冒泡需要注意!
    JavaScript闭包
    JS原型与原型链终极讲解
    逐行分析jQuery源码
    jQuery源码分析-03构造jQuery对象-源码结构和核心函数
    screenX clientX pageX的区别
    JSON.stringify 语法实例讲解
    pipenv 简要指南
    webpy简单使用
    初识Dash -- 构建一个人人都能够轻松上手的界面,操控数据和可视化
  • 原文地址:https://www.cnblogs.com/alsf/p/6128837.html
Copyright © 2011-2022 走看看