限制为同时调用一个函数

时间:2014-11-10 08:17:50

标签: sql oracle oracle10g

所以,我在我的表格中有一个我用作参考的专栏。

引用是使用多个字符串构建的,最后一个是数字。

在我的函数中使用这个sql代码,我得到最后一个数字

SELECT DECODE(MAX(CAST(SUBSTR(numero,INSTR(numero,'/', 1, 4)+1,1000) as Int)), NULL, '0', MAX(CAST(SUBSTR(numero,INSTR(numero,'/', 1, 4)+1,1000) as Int))) +1 into v_nbnumeronum
          from table
          where numero like TO_CHAR(sysdate,'%/YYYY/MM/%');

这很好用。

事实是,因为我可以多次调用存储过程,我调用该函数,numero对于函数的多次调用将是相同的(因为表尚未更新)。 / p>

有没有办法像:

while function hadn't been called

if "function is is used" then wait
else call function

end loop

这是近似的。我不知道这是否可行。我对oracle 10g没有了解这一点的知识。

该功能正常,但在提交未被呼叫之前,它总会找到相同的最大当前数,这是不好的。

所以当我知道它会被调用一次时它会起作用,但是当有更多......

编辑所以,我调用了此函数,以查找numero列中使用的最大数字。

此函数由存储过程调用。在调用函数之后,稍后在过程中,我在表格中插入一行,并commit更改。

事实是,它一次可以有多个存储过程实例。因此,在commit未完成之前,它始终会找到相同的最大数量。因此,在调用函数的多个存储过程中,return语句中将有相同的数字,这是不好的。

谢谢。

0 个答案:

没有答案