六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 78|回复: 0

利用user_updatable_columns视图来查看视图中可以更新的列

[复制链接]

升级  30%

3

主题

3

主题

3

主题

童生

Rank: 1

积分
15
 楼主| 发表于 2013-1-27 04:41:33 | 显示全部楼层 |阅读模式
利用user_updatable_columns视图来查看视图中可以更新的列 
 
SQL> SET LONG 9999
SQL> SELECT DBMS_METADATA.GET_DDL('VIEW','CLASSES')
  2  FROM DUAL;
 
DBMS_METADATA.GET_DDL('VIEW','CLASSES')                                        
--------------------------------------------------------------------------------
                                                                               
  CREATE OR REPLACE FORCE VIEW "TAISHAN_JAP"."CLASSES" ("CLASSNO", "CLASSNAME",
AR", "OTHERNAME", "BALANCE", "DEPARTMENTID", "STUDENTTYPECODE", "YEARLIMIT", "HE
ADER1", "HEADERPHONE1", "HEADER2", "HEADERPHONE2", "MONITORID", "CLASSROOMID", "
DORM", "CREATORID", "CREATORDATE", "LASTEDITID", "LASTEDITDATE", "CLASSESSTATUS"
) AS                                                                           
  SELECT                                                                       
CLASSID CLASSNO, CLASSNAME CLASSNAME , SUBCAMPUSID SUBCAMPUSID,                
  C.SPECIALITYID  SPECIALITYID,C.GRADE  GRADEYEAR, CLASSALIAS OTHERNAME,       
  0 BALANCE, C.DEPID  DEPARTMENTID, S.TRAINLEVEL STUDENTTYPECODE,              
  S.DEFAULTYEARS YEARLIMIT,(SELECT A.ADMINPERSONID FROM XJ_CLASSADMIN A WHERE A.
ROWNUM=1) HEADER1,                                                             
  (SELECT A.TELEPHONE FROM XJ_CLASSADMIN A WHERE A.CLASSID=C.CLASSID AND ROWNUM=
  ' ' HEADER2, ' ' HEADERPHONE2, ' ' MONITORID,                                
  C.FIXEDCLASSROOMID CLASSROOMID,' ' DORM, '' CREATORID,                       
  SYSDATE CREATORDATE,'' LASTEDITID, SYSDATE LASTEDITDATE,                     
  '0' CLASSESSTATUS                                                            
FROM XJ_CLASSES C,UP_SPECIALITYINYEAR US,UP_SPECIALITY S                       
 WHERE C.SPECIALITYID=US.SPECIALITYID  AND  C.GRADE=US.GRADE AND US.SPECIALITYID
SPECIALITYID                                                                   
                                                                               
查看classes视图的定义,有多个表连接构成,但并不是说该视图就不能更新。
 
SQL> SELECT COLUMN_NAME,UPDATABLE,INSERTABLE,DELETABLE
  2  FROM USER_UPDATABLE_COLUMNS
  3  WHERE TABLE_NAME='CLASSES';
 
COLUMN_NAME                    UPD INS DEL                                     
------------------------------ --- --- ---                                     
CLASSNO                        YES YES YES                                     
CLASSNAME                      YES YES YES                                     
SUBCAMPUSID                    YES YES YES                                     
SPECIALITYID                   YES YES YES                                     
GRADEYEAR                      YES YES YES                                     
OTHERNAME                      YES YES YES                                     
BALANCE                        NO  NO  NO                                      
DEPARTMENTID                   YES YES YES                                     
STUDENTTYPECODE                NO  NO  NO                                      
YEARLIMIT                      NO  NO  NO                                      
HEADER1                        NO  NO  NO                                      
HEADERPHONE1                   NO  NO  NO                                      
HEADER2                        NO  NO  NO                                      
HEADERPHONE2                   NO  NO  NO                                      
MONITORID                      NO  NO  NO                                      
CLASSROOMID                    YES YES YES                                     
DORM                           NO  NO  NO                                      
CREATORID                      NO  NO  NO                                      
CREATORDATE                    NO  NO  NO                                      
LASTEDITID                     NO  NO  NO                                      
LASTEDITDATE                   NO  NO  NO                                      
CLASSESSTATUS                  NO  NO  NO                                      
 
已选择22行。
 
SQL> SELECT CLASSID,CLASSNAME
  2  FROM XJ_CLASSES
  3  WHERE ROWNUM=1;
 
CLASSID                          CLASSNAME                                     
-------------------------------- --------------------------------              
C875F600867948568816847C9B513600 09G数维2班                                    
 
SQL> UPDATE CLASSES
  2  SET  CLASSNAME='TEST'
  3  WHERE CLASSNO='C875F600867948568816847C9B513600';
 
已更新 1 行。
   
      当然也可以使用dba_updatable_columns和all_updatable_columns也可以实现此事!
 
    记录下来,便于查阅!
=================================
摘自:http://blog.chinaunix.net/u/22472/showart.php?id=315113
      西方经济学的百草园
作者:红红 创建于: 2007-06-05 15:40:40,修改于: 2007-06-05 15:40:40,已浏览225次,有评论0条 
=================================
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表