存储过程 线程安全问题
如题
线程安全问题
在存储过程里面如何实现
从一个表取数据,保证在存储过程这一级 就 实现
望高手赐教
目前知道用序列
[解决办法]
在表中读取完某个字段最大值,然后这个字段最大值在下次读取时自动+1?
建议楼主还是具体讲讲你实际的应用,想要达到的效果,最好有示例说明。现在比较难以理解这样做的意义在哪里。
[解决办法]
4 function getNext(sourceNo number) return varchar2;
5 end testp;
6 /
Package created
SQL> create or replace package body testp is
2 function getNext(sourceNo number) return varchar2 is
3 strRet varchar2(8000);
4 begin
5 strNoHead := 'xxx';
6 if (sourceNo >= seqNo) then
7 seqNo := sourceNo;
8 end if;
9 seqNo := seqNo + 1;
10 strRet := strNoHead
[解决办法]
to_char(seqNo);
11 return strRet;
12 end;
13 end testp;
14 /
Package body created
SQL> select testp.getNext(max(a)) from test;
TESTP.GETNEXT(MAX(A))
--------------------------------------------
xxx105
SQL> select testp.getNext(max(a)) from test;
TESTP.GETNEXT(MAX(A))
--------------------------------------------
xxx106
SQL> select testp.getNext(max(a)) from test;
TESTP.GETNEXT(MAX(A))
--------------------------------------------
xxx107
SQL>
[解决办法]
抱歉,这个不行,忘记测试了,不能突破session
[解决办法]
还是建议用锁、物理表、序列或在代码端用共同调用中的全局变量来控制。
[解决办法]
like '
[解决办法]
'''%'
[解决办法]
ls_tmp_pre
[解决办法]
'______%'
[解决办法]
''';';--此处在语句内部不需要“;”号了,改为
like '
[解决办法]
'''%'
[解决办法]
ls_tmp_pre
[解决办法]
'______%'
[解决办法]
'''';