日期:2014-05-17  浏览次数:20829 次

oracle default
create table table1(
 
  id NUMBER(10),
  t1 VARCHAR2(10) default '111'

);

执行成功的
update table1 set t1 = default;

现在我想这样执行,请问如何处理?
select * from table1 where t1 = default;


------解决方案--------------------
这个值可以查出来,但是一般是LONG型的,而且转换也比较麻烦。如果你业务层是Java等,建议你建立一个静态接口或者类来存储这些缺省值。如果是你做PL/SQL开发,就将其存储一个表中(将缺省的列值都存到这表中统一管理)。
------解决方案--------------------
第一步:建立一个函数转换Long与Varchar类型
SQL code
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;