好像是系统定义的一引起函数,而且不能使用CURRVAL, NEXTVAL, LEVEL, and ROWNUM

解决方案 »

  1.   

    缺少值不能引用函数吧,在oracle8i不能通过
      

  2.   

    可以用的
    SQL> create table t3
      2  (
      3   col1 varchar(20) default to_char(sysdate,'yyyy-mm-dd')
      4  )
      5  /
    这条语就没问题,刚测过
      

  3.   

    14:38:17 SQL> select hostname from dual;
    select hostname from dual
           *
    ERROR 位于第1行:
    ORA-00904: 无效列名
    实际:50hostname 是个什么函数?sysdate函数没问题:
    14:37:07 SQL> alter table t2 modify col default sysdate;表已更改。实际:2854
    14:37:37 SQL> insert into t2(id) values('a');已创建 1 行。实际:22014:38:11 SQL> select * from t2;ID         COL
    ---------- ----------
    a          17-3月 -03实际:80
    14:38:17 SQL>
      

  4.   

    create function namr_f(p1 in number,p2 in number)
    return number
    as
    renum number;
    begin
    renum:=p1-p2;
    return(renum);
    end;
    /create table t1(a number,b number,c number default name_f(a,b));
    自定义函数作缺省值会出错
      

  5.   

    create or replace function HostName
    return varchar2 is
    varComputer varchar2(20);
    begin
    select Terminal into varComputer from V$SESSION 
    where audsid = (select userenv('sessionid') from dual);
        
    return (varComputer);
    end HostName;
      

  6.   

    SQL> conn scott/tiger@eai01;
    已连接。
    SQL> create function add_f(p1 in number,p2 in number)
      2  return number is
      3  rNumber number;
      4  begin
      5  rNumber := p1+p2;
      6  return(rNumber);
      7  end;
      8  /函数已创建。SQL> select add_f(1,2)"a" from dual;         a
    ----------
             3