各位好,我知道注释的表为user_col_comments
但是我用用户导出了数据之后,不能做insert,说的是权限不够.
请问怎么解决.谢谢!

解决方案 »

  1.   

    你的用户没有INSERT 的权限吧,GRANT INSERT ON 表名 TO 用户 
      

  2.   

    这是张试图啊...你怎么可以随便做insert???
    这张视图是根据你在建立表的注释来改变的..你要insert就去修改你表结构就行了
      

  3.   

    就是说对这个view做insert行不通咯?
    ...因为在导入库之后.所有的注释都变成乱码了...
    所以所有的表注释都要导的...
    有没有什么简单的方法?
    我想把以前的库的注释都导出来,然后覆盖掉现在的注释
      

  4.   

    你追踪下这个视图,看看是哪几个表
    然后去修改那几个表
    create or replace view dba_col_comments
    (owner, table_name, column_name, comments)
    as
    select u.name, o.name, c.name, co.comment$
    from sys.obj$ o, sys.col$ c, sys.user$ u, sys.com$ co
    where o.owner# = u.user#
      and o.type# in (2, 4)
      and o.obj# = c.obj#
      and c.obj# = co.obj#(+)
      and c.intcol# = co.col#(+)
      and bitand(c.property, 32) = 0 /* not hidden column */
      

  5.   

    直接在系统表中插入不好吧
    可以通过系统字典生成一批增加释的语句是最好的,如:
    SELECT 'comment on column ' || t.table_name || '.' || t.column_name || ' is ''' 
          || t.comments ||''';'
      FROM user_col_comments t;
      

  6.   

    可不可以就像用pl/sql工具来导出就像导出一个用户对象的function或者什么的
      

  7.   

    只能使用SYS用户进行操作,建议使用DBLINK同步数据,单个表的脚本如下:(@JL_ZSK 这个是DBLINK的名字,你得自己改)
    DELETE FROM   sys.com$ C WHERE obj# IN (
      SELECT o.obj# FROM sys.obj$ o, sys.user$ u
       WHERE o.owner# = u.user#
      and o.obj# = c.obj# AND o.name =IN_TABLE_NAME AND U.NAME =IN_OWNER)
      AND c.col# is NULL;
    COMMIT;INSERT INTO sys.com$ (obj#,col#,comment$)
    SELECT o.obj#,NULL, c_ZSK.comment$
      FROM sys.obj$ o, sys.user$ u/*,sys.com$ C*/ ,sys.obj$@JL_ZSK o_ZSK, sys.user$@JL_ZSK  u_ZSK, sys.com$@JL_ZSK  c_ZSK
       WHERE o.owner# = u.user# --and o.obj# = c.obj#(+) AND c.col# is NULL  
       AND o.name =IN_TABLE_NAME AND U.NAME =IN_OWNER
      AND o_ZSK.owner# = u_ZSK.user#
      and o_ZSK.obj# = c_ZSK.obj#(+)
      and c_ZSK.col# is NULL
      AND o.name =o_ZSK.name AND  U.NAME =U_ZSK.NAME AND c_ZSK.comment$ IS NOT NULL;COMMIT;
      

  8.   

    能够有现成的工具吗?????单个的导太麻烦了...要导到哭...可以有工具把所选的表的注释用sql语句导出来吗?