Post Views: 275
การเขียน 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 อยู่แล้ว
![](https://sysadmin.psu.ac.th/wp-content/uploads/2023/01/image-16.png)
![](https://sysadmin.psu.ac.th/wp-content/uploads/2023/01/image-17.png)
![](https://sysadmin.psu.ac.th/wp-content/uploads/2023/01/image-18.png)
![](https://sysadmin.psu.ac.th/wp-content/uploads/2023/01/image-21.png)
ขั้นตอนที่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;
![](https://sysadmin.psu.ac.th/wp-content/uploads/2023/01/image-15.png)
ขั้นตอนที่ 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;
![](https://sysadmin.psu.ac.th/wp-content/uploads/2023/01/image-10.png)
ขั้นตอนที่ 3 จากนั้นก็ Copy script จากขั้นตอนที่ 2 ไป execute script และจะได้ผลลัพธ์ตามภาพด้านล่าง
![](https://sysadmin.psu.ac.th/wp-content/uploads/2023/01/image-23.png)
- ข้อเสีย จะเห็นว่า MASTER_MAJOR_NAME_THAI และ MASTER_MAJOR_NAME_ENG ใช้ไม่ได้เนื่องจาก ชื่อ column ไม่ตรงกับตารางที่เรียก
หวังว่า km จะมีประโยชน์ไม่มากก็น้อยและสามารถช่วยลดระยะเวลาในการทำ document นะคะ