函数DB2表函数

问题描述 投票:0回答:1

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

询问

Example : 

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

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

结果:

    Column

    1
    2
    3

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

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

我正在使用DB2 v11.1

sql db2 pipe
1个回答
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@
© www.soinside.com 2019 - 2024. All rights reserved.