在Oracle数据库中,COMMENT ON
语句用于为数据库对象(如表、列、视图、序列、类型等)添加或修改注释。这些注释对于数据库文档化非常有用,因为它们允许数据库管理员和开发者为数据库对象提供描述性文本,这些文本可以在查询数据库字典视图时检索到。
语法
对于表和列,COMMENT ON
语句的基本语法如下:
-
为表添加或修改注释:
COMMENT ON TABLE table_name IS 'comment_text';
-
为列添加或修改注释:
COMMENT ON COLUMN table_name.column_name IS 'comment_text';
其中,table_name
是要添加注释的表的名称,column_name
是表中要添加注释的列的名称,comment_text
是你想要添加的注释文本。
示例
假设我们有一个名为 employees
的表,它有两个列:employee_id
和 employee_name
。
-
为表添加注释:
COMMENT ON TABLE employees IS 'This table contains information about employees.';
-
为列添加注释:
COMMENT ON COLUMN employees.employee_id IS 'Unique identifier for each employee.'; COMMENT ON COLUMN employees.employee_name IS 'Name of the employee.';
-
为视图注释:
TESTUSER@FREEPDB1> create view v_test1 as select 1 as v1,sysdate as sys_date from dual; View created. TESTUSER@FREEPDB1> comment on view v_test1 is 'test is comment'; ERROR at line 1: ORA-32594: invalid object category for COMMENT command
错误解释:
Oracle 错误 ORA-32594 表明你正在尝试对一个视图进行注释,但是使用的语法不正确或者你正在尝试对一个表进行注释的操作。
解决方法:
确保你使用的是正确的语法来为视图添加注释,并且确保你没有误将表的注释语句用在视图上。以下是为视图添加注释的正确语法:
TESTUSER@FREEPDB1> comment on table v_test1 is 'test is comment'; Comment created. TESTUSER@orcl> col TABLE_NAME format a30 TESTUSER@orcl> col COMMENTS format a60 TESTUSER@orcl> set linesize 300 TESTUSER@orcl> select * from user_tab_comments; TABLE_NAME TABLE_TYPE COMMENTS ORIGIN_CON_ID ------------------------------ ------------- ------------------------------------------------------------ ------------- EMP_DETAILS_VIEW VIEW 0 V_TEST1 VIEW test is comment 0 COUNTRIES TABLE country table. Contains 25 rows. References with locations t 0 able. DEPARTMENTS TABLE Departments table that shows details of departments where em 0 ployees work. Contains 27 rows; references with locations, employees , and job_history tables. EMPLOYEES TABLE employees table. Contains 107 rows. References with departme 0
测试12c/19c/23ai三个版本,都需要comment on table执行添加备注成功,而不是comment on view。
检索注释
要检索这些注释,你可以查询数据字典视图,如 USER_TAB_COMMENTS
(针对当前用户的表注释)和 USER_COL_COMMENTS
(针对当前用户的列注释)。如果你需要查询其他用户的注释,可以使用 ALL_TAB_COMMENTS
和 ALL_COL_COMMENTS
,或者如果你有足够的权限,可以使用 DBA_TAB_COMMENTS
和 DBA_COL_COMMENTS
来查询数据库中所有用户的注释。
例如,要查看 employees
表的注释,你可以执行:
SELECT table_name, comments
FROM user_tab_comments
WHERE table_name = 'EMPLOYEES';
类似地,要查看 employees
表中 employee_id
列的注释,你可以执行:
SELECT column_name, comments
FROM user_col_comments
WHERE table_name = 'EMPLOYEES' AND column_name = 'EMPLOYEE_ID';
注意事项
- 注释文本的长度可能受到数据库版本和配置的限制。
- 注释是数据库元数据的一部分,它们不会影响数据库的性能或操作。
- 注释对于数据库文档化和维护非常重要,因为它们提供了关于数据库对象用途和内容的上下文信息。