आपको डायनेमिक SQL के किसी न किसी रूप का उपयोग करना चाहिए। यहां एक त्वरित उदाहरण दिया गया है:
यह SQL स्टेटमेंट बनाता है जो आपकी इच्छित तालिका से '/' अलग किए गए कॉलम का चयन करेगा। फिर यह उस SQL कथन को चलाने के लिए गतिशील SQL का उपयोग करता है।
DECLARE
p_table_name VARCHAR2(30) := 'DBA_OBJECTS';
l_sql VARCHAR2(32000);
TYPE varchar2tab IS TABLE OF VARCHAR2(32000);
l_array varchar2tab;
BEGIN
SELECT 'SELECT ' || listagg(column_name,' ||''/''||') within group ( order by column_id ) || ' FROM ' || owner || '.' || table_name || ' WHERE ROWNUM <= 100'
INTO l_sql
FROM dba_tab_columns
where table_Name = 'DBA_OBJECTS'
group by owner, table_Name;
EXECUTE IMMEDIATE l_sql BULK COLLECT INTO l_array;
FOR i in l_array.first .. l_array.last LOOP
dbms_output.put_line(l_array(i));
END LOOP;
END;