① 直接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
自己顶。。。
#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
不好意思啊,点错板砖了。
因为用户下面没有表,所以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
那为啥PLSQL里能看到。。。
#7
那为啥PLSQLdeveloper 的 查看SQL按钮里能看到。。。
#8
恩,我试试。
#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
不好意思啊,点错板砖了。
因为用户下面没有表,所以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
那为啥PLSQL里能看到。。。
#7
那为啥PLSQLdeveloper 的 查看SQL按钮里能看到。。。
#8
恩,我试试。