函数DB2表函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数DB2表函数相关的知识,希望对你有一定的参考价值。

有人知道如何在DB2中获得该结果?

询问

Example : 

    SELECT * FROM TABLE(FunctionName('1||2||3',||)) ;

第一个是带有值的参数,第二个是带有分隔符的参数。

结果:

    Column

    1
    2
    3

我在该查询上添加的值基于参数和分隔符。

正如我上面所说,行是由管道中断。我没有PL / SQL的大背景。

我正在使用DB2 v11.1

答案

所以我一直面临这个问题,我找到了解决方案:

CREATE OR REPLACE FUNCTION Test(
Data_1 CLOB(1M), Delimtator VARCHAR(12))
RETURNS TABLE (
FieldData varchar(2048))
LANGUAGE SQL
BEGIN
    DECLARE dInic INTEGER DEFAULT 1 ;
    DECLARE dFim  INTEGER DEFAULT 0 ;
    DECLARE Rowid1 INTEGER DEFAULT 0;
    DECLARE Campo VARCHAR(2048);

    IF Data_1 IS NULL THEN
        RETURN;
    END IF;

    SET dFim=LOCATE(Delimtator,Data_1);

    WHILE dFim>0 DO
     SET Campo=SUBSTRING(Data_1,dInic,dFim-dInic);
        PIPE (Campo);
        SET dInic=dFim+LENGTH(Delimtator);
        SET dFim=LOCATE(Delimtator,Data_1,dFim+LENGTH(Delimtator));
    END WHILE;

    SET Campo=SUBSTRING(Data_1, dInic,LENGTH(Data_1)-dInic+1);
    PIPE (Campo);
    RETURN;
END@

以上是关于函数DB2表函数的主要内容,如果未能解决你的问题,请参考以下文章

如何为 DB2 表值函数传递日期参数

准备好的语句中的 IBM DB2 标量函数参数

sql数据库截取字符串函数

创建函数 - 流水线 DB2

创建函数 - PIPELINED DB2

db2报错信息为‘字符串函数中的长度或位置超出范围’是啥意思