การเขียน comment ของ column view อัตโนมัติผ่านการสร้าง sql script ใน oracle โดยการนำ comment ของ column table มา generate comments ของ column view นั้น เพื่อประหยัดเวลาและไม่ต้องเขียน comment ซ้ำอีกรอบในการสร้าง view
จะยกตัวอย่างการใช้งาน โดยเลือก view V_MAJOR_FOR_API ที่ไม่มี comments โดยที่ view V_MAJOR_FOR_API มีการเรียกใช้ตาราง MAJOR, ตาราง MAJOR_TYPE และ ตาราง DEPT ที่มีการเขียน comments ของ column table อยู่แล้ว




ขั้นตอนที่1 จัดทำ sql script เพื่อสร้าง comments ของ column view
SELECT ud.name                                view_name,
       ud.referenced_name                     based_table,
       vcols.column_name,
        NVL (tcom.comments, vcom.comments)     comments
   FROM all_dependencies  ud,
       all_tab_columns   vcols,
       all_tab_columns   tcols,
       all_col_comments  tcom,
       all_col_comments  vcom
 WHERE     ud.referenced_name = tcom.table_name
       AND ud.name = vcom.table_name
       AND vcols.table_name = ud.name
       AND vcols.owner = ud.owner
       AND vcols.column_name = vcom.column_name
       AND vcols.column_name = tcols.column_name
       AND tcols.owner = ud.owner
       AND tcols.table_name = ud.referenced_name
       AND tcols.column_name = tcom.column_name
       AND vcom.owner = ud.owner
       AND tcom.owner = ud.owner
       AND ud.name = 'V_MAJOR_FOR_API'
       AND ud.TYPE = 'VIEW'
       AND ud.referenced_type IN ('TABLE', 'VIEW')
       AND tcom.comments IS NOT NULL;

ขั้นตอนที่ 2 จัดทำ format sql script เพื่อสร้าง comment ของ column view ตามรูปแบบ “COMMENT ON COLUMN V_MAJOR_FOR_API .MAJOR_TYPE IS ‘รหัสประเภท’;“ โดยเขียน sql script จากข้างบนมาจัดการต่อ
SELECT    'COMMENT ON COLUMN '
       || ud.name
       || '.'
       || vcols.column_name
       || ' IS '''
       || NVL (tcom.comments, vcom.comments)
       || ''';'    comments
  FROM all_dependencies  ud,
       all_tab_columns   vcols,
       all_tab_columns   tcols,
       all_col_comments  tcom,
       all_col_comments  vcom
 WHERE     ud.referenced_name = tcom.table_name
       AND ud.name = vcom.table_name
       AND vcols.table_name = ud.name
       AND vcols.owner = ud.owner
       AND vcols.column_name = vcom.column_name
       AND vcols.column_name = tcols.column_name
       AND tcols.owner = ud.owner
       AND tcols.table_name = ud.referenced_name
       AND tcols.column_name = tcom.column_name
       AND vcom.owner = ud.owner
       AND tcom.owner = ud.owner
       AND ud.name = 'V_MAJOR_FOR_API'
       AND ud.TYPE = 'VIEW'
       AND ud.referenced_type IN ('TABLE', 'VIEW')
       AND tcom.comments IS NOT NULL;

ขั้นตอนที่ 3 จากนั้นก็ Copy script จากขั้นตอนที่ 2 ไป execute script และจะได้ผลลัพธ์ตามภาพด้านล่าง

- ข้อเสีย จะเห็นว่า MASTER_MAJOR_NAME_THAI และ MASTER_MAJOR_NAME_ENG ใช้ไม่ได้เนื่องจาก ชื่อ column ไม่ตรงกับตารางที่เรียก
 
หวังว่า km จะมีประโยชน์ไม่มากก็น้อยและสามารถช่วยลดระยะเวลาในการทำ document นะคะ





























