ITPub博客

首页 > 数据库 > Oracle > [20240308]建立完善查询表字段的comments信息.txt

[20240308]建立完善查询表字段的comments信息.txt

原创 Oracle 作者:lfree 时间:2024-03-12 09:47:09 0 删除 编辑

[20240308]建立完善查询表字段的comments信息.txt

--//优化sql语句时有时候要了解字段的意思,我以前已经根据开发文档更新了许多字段注解.
--//这是一项非常耗时无聊的工作,几乎花了我一个星期完成这项工作,但是一些定制化的需求,比如增加一些字段.
--//但当我向对方提出这些字段的相关文档时,我把那些没有注解的字段打印提交给对方,对方几乎拿不出来相关的解析,
--//这些字段基本是开发根据应用需求自己加上的,也就是这些信息基本在相关人员的脑子里,其他人根本不懂什么意思,
--//可见项目管理的混乱,以后这些字段表示怎么只能猜测,当然有一些还是可以猜测的.

--//最后只能给我一个临时的解决方案,就是当我不懂的时候,可以向对方提问,这简直是扯蛋!!我没事天天问这些问题.
--//实际上最可怕就是那些表示状态,标识的字段,你根本不知道对应值的0,1,2...表示什么,而这些字段往往可能需要建立索引.

--//还有一些开发会在项目验收后或者退场时,删除相应应用程序字段的注解.
--//实际上我以前有1个工作习惯使用exp定期备份元数据,不备份表中记录,我再抽取出来导入就ok了.
--//我们现在项目验收后要有这方面的要求,至于是否认真执行,我就不清楚了.

--//我遇到这方面管理最好的是东软的医保管理项目,几乎增加字段都会更新相应的字段注解.虽然那些字段命名有一些怪异.
--//不过有相关字段注解,还是很好理解sql语句代码的意思.

--//做优化工作有时候需要了解字段的具体含义,以前都是辅助使用toad查看,有空随手写一个脚本方便以后的工作.

$ cat tcc.sql
-- Copyright 2023 lfree. All rights reserved.
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms and conditions.
----------------------------------------------------------------------------------------------
--
-- Name:        tcc.sql
-- Purpose:     display Table_name and Column_name of Comments information
--
-- Author:      lfree
-- Usage:
--     @tcc  owner.index_name <1|''||1=1|col1,col2,...,colN>
--
-- other :     
-- argument1 can enter % ,for example : %.table_name or scott.%de%
-- argument2 = <1|''||1=1>          query all column_name in table
--           = <col1,col2,...,colN> query col1,col2,...,colN, The string list cannot have spaces
-----------------------------------------------------------------------------------------------

column COMMENTS format a180 wrap

set termout off
column column_string new_value column_string format a200
select decode('&2','','1=1','1','1=1','1=1','1=1','column_name in ('||''''||replace(upper('&2'),',',''',''')||''')' ) column_string from dual ;

column v_owner new_value v_owner
column v_table new_value v_table
select
 upper(CASE
                    WHEN INSTR('&1','.') > 0 THEN
                        SUBSTR('&1',INSTR('&1','.')+1)
                    ELSE
                        '&1'
                    END
                     )  v_table,
 CASE WHEN INSTR('&1','.') > 0 THEN
            UPPER(SUBSTR('&1',1,INSTR('&1','.')-1))
        ELSE
            user
        END v_owner
from dual;
set termout on

PROMPT DISPLAY TABLE_NAME COMMENTS INFORMATION (&&V_OWNER..&V_TABLE)
SELECT * FROM DBA_TAB_COMMENTS WHERE UPPER(TABLE_NAME) LIKE '&V_TABLE' AND OWNER LIKE '&V_OWNER';
PORMPT
PROMPT DISPLAY COLUMN_NAME COMMENTS INFORMATION (&&V_OWNER..&V_TABLE)
SELECT * FROM DBA_COL_COMMENTS WHERE UPPER(TABLE_NAME) LIKE '&V_TABLE' AND OWNER LIKE '&V_OWNER' AND (&COLUMN_STRING);
PORMPT

--//测试:
SYS@127.0.0.1:9014/ywdb> @ tcc PPPPPP_HHH.ATF_YPXX OCC_TIME,p_id,drug_code
DISPLAY TABLE_NAME COMMENTS INFORMATION (PPPPPP_HHH.ATF_YPXX)
OWNER      TABLE_NAME TABLE_TYPE  COMMENTS
---------- ---------- ----------- -------------------
PPPPPP_HHH ATF_YPXX   TABLE       包药机药品信息


DISPLAY COLUMN_NAME COMMENTS INFORMATION (PPPPPP_HHH.ATF_YPXX)
OWNER      TABLE_NAME COLUMN_NAME          COMMENTS
---------- ---------- -------------------- ----------
PPPPPP_HHH ATF_YPXX   P_ID                 病人ID
PPPPPP_HHH ATF_YPXX   DRUG_CODE            药品编号
PPPPPP_HHH ATF_YPXX   OCC_TIME             执行时间



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3008671/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969411