Oracle PLSQL将单行转换为一个字符串

Oracle PLSQL将单行转换为一个字符串,oracle,plsql,Oracle,Plsql,您好,我正在寻找一个Oracle函数,用于将一行中的所有记录转换为单个字符串 表A |a | b | c | 1| |d | e | f | 2| |g | h | i | 3| select * from TABLE_A where COL4='1'; 必须返回 abc def 我不能用CONCAT 因为我不知道表中列的编号和名称 有可能吗?请尝试此操作,使用ID=1的记录,您可以更改此操作,或者根据需要添加一个循环: DECLARE CURSOR CUR IS SE

您好,我正在寻找一个Oracle函数,用于将一行中的所有记录转换为单个字符串

表A

|a | b | c | 1|

|d | e | f | 2|

|g | h | i | 3|

select * from TABLE_A where COL4='1';
必须返回

abc

def

我不能用CONCAT

因为我不知道表中列的编号和名称


有可能吗?

请尝试此操作,使用ID=1的记录,您可以更改此操作,或者根据需要添加一个循环:

DECLARE
    CURSOR CUR IS
        SELECT COLUMN_NAME
        FROM ALL_TAB_COLS
        WHERE TABLE_NAME='TABLE_A';
    STMT   VARCHAR(1000);
    RESULT VARCHAR(1000);
BEGIN
    STMT := 'SELECT ';
    FOR COL in CUR
    LOOP
        STMT := STMT || COL.COLUMN_NAME || '||';
    END LOOP;
    STMT := STMT || ''''' FROM TABLE_A WHERE ID=1';
    DBMS_OUTPUT.PUT_LINE( STMT );
    EXECUTE IMMEDIATE
        STMT
        INTO RESULT;
    DBMS_OUTPUT.PUT_LINE( 'RESULT: ' || RESULT );
END;

与此问题无关,但rownum='2'不起作用。谢谢。是,这是一个错误:-p所有列都是varchar还是char?如果有日期,应以何种格式显示?是否会有LOB?它们是不同表的不同数据类型。我想要一个适用于所有表的通用程序。我可以排除CLOB。您可以使用数据字典ALL\u TAB\u COLS和动态sql的组合来实现这一点。
SELECT COL1||COL2||COL3 from TABLE_A 
DECLARE
    CURSOR CUR IS
        SELECT COLUMN_NAME
        FROM ALL_TAB_COLS
        WHERE TABLE_NAME='TABLE_A';
    STMT   VARCHAR(1000);
    RESULT VARCHAR(1000);
BEGIN
    STMT := 'SELECT ';
    FOR COL in CUR
    LOOP
        STMT := STMT || COL.COLUMN_NAME || '||';
    END LOOP;
    STMT := STMT || ''''' FROM TABLE_A WHERE ID=1';
    DBMS_OUTPUT.PUT_LINE( STMT );
    EXECUTE IMMEDIATE
        STMT
        INTO RESULT;
    DBMS_OUTPUT.PUT_LINE( 'RESULT: ' || RESULT );
END;