① 直接select * from 表名(同义词名称) 可以直接查看那些表里的数据。
② 如果我用plsqldev 连接,
还能通过ctrl+点击的方式查看表结构的SQL,这么说 理论上表结构是可以获取的。
③ 但是怎样才能获得呢?
网上搜了一下,有个dbms_metadata.get_ddl('')函数
但是 select dbms_metadata.get_ddl('SYNONYM','ABC') from dual 这样的语句只能获得创建同义词的 语句;
像这样:CREATE OR REPLACE SYNONYM "CONN"."ABC" FOR "LOCALDBA"."ABC"
如果 select dbms_metadata.get_ddl('TABLE','ABC') from dual 的话 ,很明显系统会认为 本用户CONN下没有ABC表。
8 个解决方案
#1
自己顶。。。
![关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题 关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OW1iM0oxYlM1amMyUnVMbTVsZEM5UWIybHVkRVp2Y25WdEwzVnBMM05qY21sd2RITXZZM05rYmk5UWJIVm5hVzR2TURBekwyOXVhVzl1THpFNUxtZHBaZz09.jpg?w=700&webp=1)
#2
借助数据字典自己生成语句
select 'create table '||table_name||'('||
wmsys.wm_concat(column_name||' '||data_type||
decode(data_type,'VARCHAR2','('||DATA_LENGTH||')','NUMBER','('||DATA_LENGTH||decode(DATA_SCALE,0,'',null,'',','||DATA_SCALE)||')',''))||');' from user_tab_columns group by table_name;
#3
![关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题 关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OW1iM0oxYlM1amMyUnVMbTVsZEM5UWIybHVkRVp2Y25WdEwzVnBMM05qY21sd2RITXZZM05rYmk5UWJIVm5hVzR2TURBekwyOXVhVzl1THpFdVoybG0%3D.jpg?w=700&webp=1)
因为用户下面没有表,所以user_tab_columns 查出来是空。如果换用 user_synonyms,就找不到字段名了。。
#4
真没有明白你说的,你百度下 同义词是什么? 引入同义词干什么,就知道你要能看到,那就是oracle 的bug 了。
#5
选择一个折中的方式吧,利用同义词创建视图
create view view_A as select * from 你的同义词 where 1=0;
然后通过user_tab_columns查看视图的字段即可
create view view_A as select * from 你的同义词 where 1=0;
然后通过user_tab_columns查看视图的字段即可
#6
![关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题 关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OW1iM0oxYlM1amMyUnVMbTVsZEM5UWIybHVkRVp2Y25WdEwzVnBMM05qY21sd2RITXZZM05rYmk5UWJIVm5hVzR2TURBekwyOXVhVzl1THpNdVoybG0%3D.jpg?w=700&webp=1)
#7
![关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题 关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OW1iM0oxYlM1amMyUnVMbTVsZEM5UWIybHVkRVp2Y25WdEwzVnBMM05qY21sd2RITXZZM05rYmk5UWJIVm5hVzR2TURBekwyOXVhVzl1THpNdVoybG0%3D.jpg?w=700&webp=1)
#8
恩,我试试。
#1
自己顶。。。
![关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题 关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OW1iM0oxYlM1amMyUnVMbTVsZEM5UWIybHVkRVp2Y25WdEwzVnBMM05qY21sd2RITXZZM05rYmk5UWJIVm5hVzR2TURBekwyOXVhVzl1THpFNUxtZHBaZz09.jpg?w=700&webp=1)
#2
借助数据字典自己生成语句
select 'create table '||table_name||'('||
wmsys.wm_concat(column_name||' '||data_type||
decode(data_type,'VARCHAR2','('||DATA_LENGTH||')','NUMBER','('||DATA_LENGTH||decode(DATA_SCALE,0,'',null,'',','||DATA_SCALE)||')',''))||');' from user_tab_columns group by table_name;
#3
![关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题 关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OW1iM0oxYlM1amMyUnVMbTVsZEM5UWIybHVkRVp2Y25WdEwzVnBMM05qY21sd2RITXZZM05rYmk5UWJIVm5hVzR2TURBekwyOXVhVzl1THpFdVoybG0%3D.jpg?w=700&webp=1)
因为用户下面没有表,所以user_tab_columns 查出来是空。如果换用 user_synonyms,就找不到字段名了。。
#4
真没有明白你说的,你百度下 同义词是什么? 引入同义词干什么,就知道你要能看到,那就是oracle 的bug 了。
#5
选择一个折中的方式吧,利用同义词创建视图
create view view_A as select * from 你的同义词 where 1=0;
然后通过user_tab_columns查看视图的字段即可
create view view_A as select * from 你的同义词 where 1=0;
然后通过user_tab_columns查看视图的字段即可
#6
![关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题 关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OW1iM0oxYlM1amMyUnVMbTVsZEM5UWIybHVkRVp2Y25WdEwzVnBMM05qY21sd2RITXZZM05rYmk5UWJIVm5hVzR2TURBekwyOXVhVzl1THpNdVoybG0%3D.jpg?w=700&webp=1)
#7
![关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题 关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OW1iM0oxYlM1amMyUnVMbTVsZEM5UWIybHVkRVp2Y25WdEwzVnBMM05qY21sd2RITXZZM05rYmk5UWJIVm5hVzR2TURBekwyOXVhVzl1THpNdVoybG0%3D.jpg?w=700&webp=1)
#8
恩,我试试。