select wm_concat(COLUMN_NAME) A FROM ALL_TAB_COLUMNS where table_name like 'T_EMPLOYEE';
如何从A
中提取数据并将其分配给另一个varchar2
变量?pl/sql:连接后提取?
select wm_concat(COLUMN_NAME) A FROM ALL_TAB_COLUMNS where table_name like 'T_EMPLOYEE';
如何从A
中提取数据并将其分配给另一个varchar2
变量?pl/sql:连接后提取?
如果你只是需要将其保存以备进一步处理VARCHAR2变量,你可以像做:
DECLARE
BUFF_V VARCHAR2(2000); -- make sure there's enough space or add some substr
BEGIN
SELECT wm_concat(COLUMN_NAME)
INTO BUFF_V
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME LIKE 'T_EMPLOYEE';
END;
如果你不想与wm_concat的解析打扰,你可以只使用类似:
DECLARE
COL_V VARCHAR2(100);
BEGIN
FOR QUERY_C IN (select COLUMN_NAME FROM ALL_TAB_COLUMNS where table_name like 'T_EMPLOYEE') LOOP
COL_V := QUERY_C.COLUMN_NAME;
-- do whatever you want with COL_V
END LOOP;
END;
这将重复上存储他们在COL_V变量的所有结果(表T_EMPLOYEE的所有列名)。
我知道已经有一个已接受的答案,但仅供参考,如果您的版本在12c上升级,wm_concat将不起作用。
您可以使用LISTAGG作为替代,那么为什么还要使用未公开的功能。 Read this
只是说。
干杯=)
由于wmsys.wm_concat会给你一个逗号分隔的列表,我假设你需要在列表中分离出价值? –