Oracle PLSQL将单行转换为一个字符串
您好,我正在寻找一个Oracle函数,用于将一行中的所有记录转换为单个字符串 表A |a | b | c | 1| |d | e | f | 2| |g | h | i | 3|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
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;