关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题

时间:2022-04-15 14:52:23
如题示,我目前拿到的用户,只有 connect角色,其下有一堆同义词能够获取另一个数据库的一些表的数据。

① 直接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表。

关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题 我该怎么做? 求大牛解答.


8 个解决方案

#1


自己顶。。。 关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题

#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


引用 2 楼 bw555 的回复:
借助数据字典自己生成语句
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;


关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题不好意思啊,点错板砖了。
因为用户下面没有表,所以user_tab_columns 查出来是空。如果换用 user_synonyms,就找不到字段名了。。

#4


真没有明白你说的,你百度下 同义词是什么? 引入同义词干什么,就知道你要能看到,那就是oracle 的bug 了。

#5


选择一个折中的方式吧,利用同义词创建视图
create view view_A as select * from 你的同义词 where 1=0;
然后通过user_tab_columns查看视图的字段即可

#6


引用 4 楼 wuxiaobo_2014 的回复:
真没有明白你说的,你百度下 同义词是什么? 引入同义词干什么,就知道你要能看到,那就是oracle 的bug 了。

关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题 那为啥PLSQL里能看到。。。

#7


引用 4 楼 wuxiaobo_2014 的回复:
真没有明白你说的,你百度下 同义词是什么? 引入同义词干什么,就知道你要能看到,那就是oracle 的bug 了。

关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题 那为啥PLSQLdeveloper 的 查看SQL按钮里能看到。。。

#8


引用 5 楼 bw555 的回复:
选择一个折中的方式吧,利用同义词创建视图
create view view_A as select * from 你的同义词 where 1=0;
然后通过user_tab_columns查看视图的字段即可

恩,我试试。

#1


自己顶。。。 关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题

#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


引用 2 楼 bw555 的回复:
借助数据字典自己生成语句
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;


关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题不好意思啊,点错板砖了。
因为用户下面没有表,所以user_tab_columns 查出来是空。如果换用 user_synonyms,就找不到字段名了。。

#4


真没有明白你说的,你百度下 同义词是什么? 引入同义词干什么,就知道你要能看到,那就是oracle 的bug 了。

#5


选择一个折中的方式吧,利用同义词创建视图
create view view_A as select * from 你的同义词 where 1=0;
然后通过user_tab_columns查看视图的字段即可

#6


引用 4 楼 wuxiaobo_2014 的回复:
真没有明白你说的,你百度下 同义词是什么? 引入同义词干什么,就知道你要能看到,那就是oracle 的bug 了。

关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题 那为啥PLSQL里能看到。。。

#7


引用 4 楼 wuxiaobo_2014 的回复:
真没有明白你说的,你百度下 同义词是什么? 引入同义词干什么,就知道你要能看到,那就是oracle 的bug 了。

关于 connect 角色的用户 如何批量获取其连接同义词的 表结构建表语句的问题 那为啥PLSQLdeveloper 的 查看SQL按钮里能看到。。。

#8


引用 5 楼 bw555 的回复:
选择一个折中的方式吧,利用同义词创建视图
create view view_A as select * from 你的同义词 where 1=0;
然后通过user_tab_columns查看视图的字段即可

恩,我试试。