我写了一个Procedure,执行速度要70多秒,但我单独执行里面的Sql语句只要2秒钟。各位高手能不能帮我看看问题是出在那里?
CREATE OR REPLACE PROCEDURE SP_SUM_ORDER_WIP(runDATE in Date,
OutErrCode Out varchar2,
OutErrMsg out varchar2) IS
-- :合同单在制品分布报表
BEGIN
EXECUTE IMMEDIATE 'TRUNCATE TABLE SUM_ORDER_WIP';
COMMIT;
INSERT INTO SUM_ORDER_WIP
SELECT B.LOT_RRN,B.LOT_ID,B.LOT_STATUS,B.LOT_OWNER,A.PRODUCT_RRN
FROM ORDER_MASTER A
INNER JOIN LOT@CACHE B ON A.TASK_ORDER_RRN = B.TASK_ORDER_RRN;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
OutErrCode := SQLCODE;
OutErrMsg := SUBSTR(SQLERRM, 1, 255);
END SP_SUM_ORDER_WIP;
CREATE OR REPLACE PROCEDURE SP_SUM_ORDER_WIP(runDATE in Date,
OutErrCode Out varchar2,
OutErrMsg out varchar2) IS
-- :合同单在制品分布报表
BEGIN
EXECUTE IMMEDIATE 'TRUNCATE TABLE SUM_ORDER_WIP';
COMMIT;
INSERT INTO SUM_ORDER_WIP
SELECT B.LOT_RRN,B.LOT_ID,B.LOT_STATUS,B.LOT_OWNER,A.PRODUCT_RRN
FROM ORDER_MASTER A
INNER JOIN LOT@CACHE B ON A.TASK_ORDER_RRN = B.TASK_ORDER_RRN;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
OutErrCode := SQLCODE;
OutErrMsg := SUBSTR(SQLERRM, 1, 255);
END SP_SUM_ORDER_WIP;
解决方案 »
- 一个简单的sql查询
- 关于Oracle10G数据导入至另一个用户名下
- Oracle 异常处理中的then后能给变量赋值吗?如果可以怎么赋值?
- 原为number(9,2)的列,已经写有数据了;我调试时改成了number(38,19)了,想改回来却提示必须清空数据?
- oracleCSService 启动不了!高手帮忙!
- 请各位oracle 高手帮忙啊,我的 oracle 在 redhat 重启后,就不能用了,帮忙看看是怎么回事啊
- oracle9i 如何进行冷备份,并进行恢复
- 基础的不能再基础的了,关于索引的理解问题!
- 是不是选取某几个字段时,必须用select ...into ...,存储过程才有效?
- 如何在ORACLE 中实现象 SQL SERVER 2000下的查询
- if(条件) sql语句怎么写?
- 现在哪还能下到oracle817
COMMIT;
估计是这句出现问题的!
COMMIT;改成
EXECUTE IMMEDIATE 'TRUNCATE TABLE SUM_ORDER_WIP; COMMIT';