当前位置: 代码迷 >> Oracle开发 >> 怎么将sql查询出的列名同时显示其注释,或者用注释代替
  详细解决方案

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

热度:98   发布时间:2016-04-24 06:27:28.0
如何将sql查询出的列名同时显示其注释,或者用注释代替?
rt,日常中经常需要从数据库中查询相关的数据提交客户,直接将查询的结果提交给客户的话,客户看不懂英文的字段名,手动替换的话也不现实,表比较多,表的字段也较多,请问如何将查询结果中的字段用USER_COL_COMMENTS 的注释来替换?
------解决思路----------------------
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> 
  相关解决方案