select (select column_name from dba_tab_columns where table_name=t1 and column_name not in(你不要的字段)) from t1 改成动态SQL 就可以了
select wm_concat(column_name) from user_tab_cols where table_name='A1' 把字段拼出来,然后删掉你不要的。 如果这个查询用的很频繁,用1楼的方法,创建对应的视图
用的plsql么,很简单,把该表下字段的文件夹拖到sql里就OK,结帖吧。
试下这个DECLARE V_SQL VARCHAR(200); BEGIN SELECT LISTAGG(COLUMN_NAME,',') WITHIN GROUP (ORDER BY COLUMN_ID) INTO V_SQL FROM DBA_TAB_COLUMNS WHERE TABLE_NAME='T2' AND COLUMN_NAME NOT IN('NAME'); V_SQL:='SELECT '|| V_SQL || ' FROM T2 '; DBMS_OUTPUT.PUT_LINE(V_SQL); --EXECUTE IMMEDIATE V_SQL; END;
改成动态SQL 就可以了
把字段拼出来,然后删掉你不要的。
如果这个查询用的很频繁,用1楼的方法,创建对应的视图
V_SQL VARCHAR(200);
BEGIN
SELECT LISTAGG(COLUMN_NAME,',') WITHIN GROUP (ORDER BY COLUMN_ID) INTO V_SQL FROM DBA_TAB_COLUMNS WHERE TABLE_NAME='T2' AND COLUMN_NAME NOT IN('NAME');
V_SQL:='SELECT '|| V_SQL || ' FROM T2 ';
DBMS_OUTPUT.PUT_LINE(V_SQL);
--EXECUTE IMMEDIATE V_SQL;
END;