Tag: commments view

  • สร้าง script comments column จาก table ไป view อัตโนมัติใน oracle

    การเขียน 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 อยู่แล้ว

    ตาราง MAJOR ที่มี comments
    ตาราง MAJOR_TYPE ที่มี comments
    ตาราง DEPT ที่มี comments
    view V_MAJOR_FOR_API ที่ไม่มี comments

    ขั้นตอนที่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;
    ผลลัพธ์จาก sql query ข้างบน

    ขั้นตอนที่ 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;
    ผลลัพธ์จาก sql query ข้างบน

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

    view V_MAJOR_FOR_API ที่มี comments จากการสร้าง script
    • ข้อเสีย จะเห็นว่า MASTER_MAJOR_NAME_THAI และ MASTER_MAJOR_NAME_ENG ใช้ไม่ได้เนื่องจาก ชื่อ column ไม่ตรงกับตารางที่เรียก

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