在编译存储过程的时候,n久也没完成,到头来,说了句"等待锁定对象****,超时",我郁闷....
偶尔也能编译成功过的.但是在用pl/sql developer进行test时是从没成功过,同样的,在作为数据源绑定到水晶报表时,也没成功过,郁闷...
描述:
1 我把其中的sql拎出来执行是蛮快的;
2 因为我是把它定义在几个过程一起的包和包体里面,所以怀疑是这个原因,现在单独自己的包和包体,还是不行.所以上来请教各位了:
1 存储过程为什么会发生锁定?有哪几种情况?
2 如何解锁?
偶尔也能编译成功过的.但是在用pl/sql developer进行test时是从没成功过,同样的,在作为数据源绑定到水晶报表时,也没成功过,郁闷...
描述:
1 我把其中的sql拎出来执行是蛮快的;
2 因为我是把它定义在几个过程一起的包和包体里面,所以怀疑是这个原因,现在单独自己的包和包体,还是不行.所以上来请教各位了:
1 存储过程为什么会发生锁定?有哪几种情况?
2 如何解锁?
EXISTS (
SELECT RP_CUS_ID,RP_CP_ID FROM
(
SELECT RP_CUS_ID,RP_CP_ID,COUNT(1) AS NUM
FROM (SELECT * FROM EB_REPAIR UNION SELECT * FROM EB_REPAIR_HISTORY)RP
GROUP BY RP_CUS_ID,RP_CP_ID
HAVING COUNT(1)>1
)A WHERE A.RP_CUS_ID = V_RPT_REPAIR_MAIN.RP_CUS_ID AND A.RP_CP_ID = V_RPT_REPAIR_MAIN.RP_CP_ID
)
去掉这个exists的条件,就ok了,郁闷
我把它转换成inner join 来实现还是不行,真不知道为什么?
SELECT RP_CUS_ID,RP_CP_ID FROM
(
SELECT RP_CUS_ID,RP_CP_ID,COUNT(1) AS NUM
FROM (SELECT * FROM EB_REPAIR UNION SELECT * FROM EB_REPAIR_HISTORY)RP
GROUP BY RP_CUS_ID,RP_CP_ID
HAVING COUNT(1)>1
)A WHERE A.RP_CUS_ID = V_RPT_REPAIR_MAIN.RP_CUS_ID AND A.RP_CP_ID = V_RPT_REPAIR_MAIN.RP_CP_ID
)如果你这个数据量很大的话,就会出现不能通过.