所以,我在我的表格中有一个我用作参考的专栏。
引用是使用多个字符串构建的,最后一个是数字。
在我的函数中使用这个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语句中将有相同的数字,这是不好的。
谢谢。