การเขียน comment ของ column view อัตโนมัติผ่านการสร้าง sql script ใน oracle โดยการนำ comment ของ column table มา generate comments ของ column view นั้น เพื่อประหยัดเวลาและไม่ต้องเขียน comment ซ้ำอีกรอบในการสร้าง view
ขั้นตอนที่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 นะคะ