create table table1(
 
  id NUMBER(10),
  t1 VARCHAR2(10) default '111');执行成功的
update table1 set t1 = default;现在我想这样执行,请问如何处理?
select * from table1 where t1 = default;

解决方案 »

  1.   

    这个值可以查出来,但是一般是LONG型的,而且转换也比较麻烦。如果你业务层是Java等,建议你建立一个静态接口或者类来存储这些缺省值。如果是你做PL/SQL开发,就将其存储一个表中(将缺省的列值都存到这表中统一管理)。
      

  2.   

    第一步:建立一个函数转换Long与Varchar类型
    CREATE OR REPLACE FUNCTION LongToString( COL_NAME VARCHAR2,TAB_NAME VARCHAR2) RETURN VARCHAR2
    AS
        Result_Value LONG;
    BEGIN
        SELECT DATA_DEFAULT INTO Result_Value FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME=COL_NAME AND TABLE_NAME=TAB_NAME;
        RETURN  REPLACE(TRANSLATE(TRIM(Result_Value),CHR(13)||CHR(10),','),'''','');
    END;第二步:直接用就可以了:
    SELECT * FROM TABLE1 
     WHERE T1 IN 
     (
           SELECT LONGTOSTRING('T1','TABLE1')  T FROM DUAL
     );
     
      

  3.   

    我用力一种笨办法,处理了PL/SQL开发的。select * from table1 where t1 = default; --oracle语法报错我的意图是想查询的结果集是 :
    t1 字段为 默认值的记录,于是我这样处理 ,把默认值保存到一个临时变量中
    insert into table1 values(999999999)RETURN t1 INTO vNum;
    select * from table1 where t1 = vNum;
    delete from table1 where id = 999999999;