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

ORACLE不能执行这样子的函数吗?
SQL code
create or replace function Get_SeqId
return integer
is
  V_SEQID INTEGER;
begin
      update tab_autonumber set FLDCOUNTD = FLDCOUNTD + 1 where
      fldidnos = 'TB_BARSCANDATA' and FieldName = 'SEQID';
      select  FLDCOUNTD into V_SEQID  from tab_autonumber where
      fldidnos = 'TB_BARSCANDATA' and FieldName = 'SEQID';
      return V_SEQID;
end Get_SeqId;


怎么在update tab_autonumber set FLDCOUNTD = FLDCOUNTD + 1 中会提示出错

------解决方案--------------------
函数是没问题的!就是不知道你函数中涉及到表,或者列是否问题!类型不匹配啊,还是当前用户下面就没有你要修改的这张表,我这里就不得而知了!需要你,一句一句,执行成功了!在拷贝到你函数中试试!
------解决方案--------------------
这个语法肯定没问题 确定一点 你的FLDCOUNTD都是number类型吗?是不是还有什么其他类型或者空值的列?
------解决方案--------------------
函数中不允许增删改 要做用过程
------解决方案--------------------
在Oracle自定义函数中不允许执行DML语句。
------解决方案--------------------
探讨
在Oracle自定义函数中不允许执行DML语句。