Wednesday, October 10, 2018

API Script to fetch Table Structure from Backend in Oracle


Please Note that this script will fetch only Table Structure but not Primary Key, Foreign Keys, Unique Keys, Indexes..etc.

DECLARE
   x_table_header      VARCHAR2 (50);
   x_data_type_row   VARCHAR2 (100);
   x_data_type           VARCHAR2 (100);
   tab_count               NUMBER := 0;
   x_column_id          NUMBER := 0;

   CURSOR tab
   IS
      SELECT ao.object_name
        FROM all_objects ao
       WHERE ao.object_type = 'TABLE'
         AND ao.object_name = 'XX_TEST1';

   CURSOR cols (p_table_name VARCHAR2)
   IS
        SELECT *
          FROM all_tab_columns atc
         WHERE atc.table_name = p_table_name
      ORDER BY column_id;
BEGIN
   DBMS_OUTPUT.enable (10000000);

   FOR i IN tab
   LOOP
      tab_count := tab_count + 1;
      x_table_header := 'CREATE TABLE ' || i.object_name || ' (';

      DBMS_OUTPUT.PUT_LINE (x_table_header);

      FOR j IN cols (i.object_name)
      LOOP
         SELECT MAX (atc.column_id)
           INTO x_column_id
           FROM all_tab_columns atc
          WHERE atc.table_name = i.object_name;

         IF j.column_id <> x_column_id
         THEN
            SELECT    j.data_type
                   || DECODE (j.data_type,
                              'VARCHAR2', '(' || j.data_length || '),',
                              ',')
              INTO x_data_type
              FROM dual;

            x_data_type_row :=
               RPAD (j.column_name, 30, ' ') || '      ' || x_data_type;
         ELSIF j.column_id = x_column_id
         THEN
            SELECT    j.data_type
                   || DECODE (j.data_type,
                              'VARCHAR2', '(' || j.data_length || '));',
                              ');')
              INTO x_data_type
              FROM dual;

            x_data_type_row :=
               RPAD (j.column_name, 30, ' ') || '      ' || x_data_type;
         END IF;

         DBMS_OUTPUT.PUT_LINE (x_data_type_row);
      END LOOP;

      DBMS_OUTPUT.PUT_LINE (' ');
   END LOOP;
END;

No comments:

Post a Comment

Query To Fetch AP Invoice Details From SO Number(Doc ID 2949013.1)

SELECT dh.source_order_number       ,df.source_line_number as so_line_number   ,df.fulfill_line_number    ,ddr.doc_user_key as po_number...