我想要一個Oracle SQL查詢,它在運行時從一個特定的TABLE獲取所有COLUMN_NAMES,然後使用這些COLUMN_NAMES從每個ROW獲取值,因爲我不知道TABLE內COLUMNS的數量和名稱。Oracle查詢在運行時獲取所有COLUMN_NAMES,然後從每個行w.r.t中獲取值。每列
表1:
COLUMN_1, COLUMN_2, COLUMN_3, COLUMN_4
value11 value12 value13 value14
value21 value22 value23 value24
...
一個SQL查詢語句,我如下期望與各行對應的Insert語句的結果:
INSERT INTO TABLE1 VALUES (value11,value12,value13,value14);
INSERT INTO TABLE1 VALUES (value21,value22,value23,value24);
...
我的方法到目前爲止如下:
查詢1
SELECT 'INSERT INTO TABLE1 VALUES (' ||COLUMN_1 ||',' ||COLUMN_2 ||',' ||COLUMN_3 ||',' ||COLUMN_4 ||');' AS INSERTSCRIPT FROM TABLE1 ORDER BY COLUMN_1;
使用此我得到所需的插入statments,但問題是「我想避免手動指定的列名的每個表(因爲有超過數百個這樣的表的更)」。
所以我一直在試圖接下來:
QUERY 2)
SELECT LISTAGG(COLUMN_NAME, ', ') WITHIN GROUP (ORDER BY COLUMN_ID) FROM USER_TAB_COLS WHERE TABLE_NAME = 'TABLE1';
其中列出了列作爲COLUMN_1, COLUMN_2, COLUMN_3, COLUMN_4
但問題是,我不能夠使用此導致QUERY_1
在此先感謝!