如何将sql查询出的列名同时显示其注释,或者用注释代替?

初唐 2015-05-04 03:35:55
rt,日常中经常需要从数据库中查询相关的数据提交客户,直接将查询的结果提交给客户的话,客户看不懂英文的字段名,手动替换的话也不现实,表比较多,表的字段也较多,请问如何将查询结果中的字段用USER_COL_COMMENTS 的注释来替换?
...全文
3953 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
初唐 2015-05-11
  • 打赏
  • 举报
回复
回4楼, 他们应用的查询功能不能满足客户的查询需求…… sql可用,多谢
jdsnhan 2015-05-06
  • 打赏
  • 举报
回复
1、为什么要直接在数据库中查询数据给用户,而不是在应用环境下?这样做存在安全隐患 2、查询字段的时候,是获取所有字段吗? 如果是,可以写个程序段,转换一下 示例:
SQL> desc t1
Name   Type        Nullable Default Comments 
------ ----------- -------- ------- -------- 
ID     NUMBER      Y                中文ID   
PID    NUMBER      Y                父级ID   
STATUS VARCHAR2(2) Y                状态     
 
SQL> select * from user_col_comments where table_name='T1';
 
TABLE_NAME                     COLUMN_NAME                    COMMENTS
------------------------------ ------------------------------ --------------------------------------------------------------------------------
T1                             ID                             中文ID
T1                             PID                            父级ID
T1                             STATUS                         状态
 
SQL> 
SQL> create or replace function f_colcom(tname in varchar2) return varchar2 is
  2    Result  varchar2(400);
  3    tsql varchar2(400);
  4  begin
  5    declare
  6      cursor c_job is
  7        select column_name, comments
  8          from user_col_comments
  9          where upper(table_name) = upper(tname);
 10          c_row c_job%rowtype;
 11   begin
 12      for c_row in c_job loop
 13        tsql := tsql || c_row.column_name||' "'||c_row.comments||'",';
 14      end loop;
 15        tsql := substr(tsql,1,length(tsql)-1);
 16        tsql := 'select '||tsql||'  from '||tname||';';
 17    end;
 18    result := tsql;
 19    return(Result);
 20  
 21  end f_colcom;
 22  /
 
Function created
 
SQL> select f_colcom('T1') from dual;
 
F_COLCOM('T1')
--------------------------------------------------------------------------------
select ID "中文ID",PID "父级ID",STATUS "状态"  from T1;
 
SQL> select ID "中文ID",PID "父级ID",STATUS "状态"  from T1;
 
      中文ID       父级ID 状态
---------- ---------- ----
         1          0 2
         2          0 4
         3          0 3
         4          1 2
         5          4 3
         6          2 4
         7          2 2
         8          7 3
         9          6 4
        10          3 0
        11          0 4
        12         11 4
        13         11 5
        14         11 3
        15          3 0
        16          3 2
        17         16 2
        18          3 3
        19         18 0
        20         18 3
 
      中文ID       父级ID 状态
---------- ---------- ----
        21         17 0
 
21 rows selected
 
SQL> 
Tiger_Zhao 2015-05-05
  • 打赏
  • 举报
回复
既然是“经常需要”,这些查询脚本应该保存下来了吧。
加个注释写上中文得列头,然后手工打开输出文件,将列头替换掉。
第一次可以从USER_COL_COMMENTS 中取,在手工编辑一下。

不能全自动至少做到可重用吧。
qq_27931103 2015-05-04
  • 打赏
  • 举报
回复
user_col_comments 可以从这个对象中获取注释。然后关联出来
  • 打赏
  • 举报
回复
好像无法自动替换

17,132

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧