看了你的函数写法,简直太漂亮了,但我改了一下业务逻辑:<br/>CREATE?OR?REPLACE?FUNCTION?make_primarykey(tableName?in?varchar2)?RETURN?integer?is<br/>??num?integer;<br/><br/>BEGIN<br/>??update?sys_manage_primarykey?t??set?<br/>??t.current_key?=?t.current_key?+?1???where?table_name=tableName?<br/>??returning?t.current_key?into?num;????<br/><br/>??if?sql%notfound?then<br/>????insert?into?sys_manage_primarykey(table_name,current_key)?values(tableName,1);<br/>????num:=1;<br/>??end?if;<br/><br/>??return?num;<br/><br/>END?make_primarykey;<br/><br/>相信你已经知道这个函数的作用了吧,如果为了防止并发,怎样添加锁,合适呢?