毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 数据库 >> 正文

自定议函数给表列赋默认值ORA-00984: 列在此处不允许

更新时间:2012-10-19:  来源:毕业论文

create table t_test(
a number(5) default 0 NOT NULL,
b varchar2(20),
c char(6) default f_setc not null);

其中:f_setc是自定议函数,执行时ORQCLE报:ORA-00984: 列在此处不允许,但如果我将f_setc换成系统函数如:to_char(123456)由可成功,但没足不了我的设计要求,请问如何才能用自定议函数作为表列的默认值?

 

函数要有返回值,f_setc返回值是什么?

楼主把f_setc 代码贴
这个函数的返回值是固定的吗,
to_char(123456)可以是因为这是个定值吧
f_setc函数是根据登录用户返回一个用户的数值代码,大致内容如下:
CREATE OR REPLACE FUNCTION f_setc RETURN VARCHAR2 IS
  RESULT VARCHAR2(6);
  v_user VARCHAR2(30);
BEGIN
  v_user := sys_context('USERENV', 'SESSION_USER');
  IF v_user = 'GYDS_TCTB' THEN
  RESULT := sys_context('XXXXX', 'XXXX');
  ELSE
  SELECT substr(paramvalue, 1, 6)
  INTO RESULT
  FROM sys_param
  WHERE paramname = 'v_sbh';
  END IF;
  RETURN(RESULT);
END f_setc;

如我将C列的默认值改为sys_context('SUPER', 'DWID')也没有问题,即可知使用系统函数是没有问题的,但我的应用只能用自定议函数实现,但是ORACLE不支持,图书管理系统论文 不知还有什么好办法。

用触发器吧
create or replace trigger tg_test
before insert on t_test
for each row
begin
if :new.c is null then
  :new.c:=f_setc;
end if;
end tg_test;

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。