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會給你一個逗號分隔的列表,我假設你需要在列表中分離出價值? –