在执行了一个oracle存储过程后所有与数据库的操作均报:数据库异常:数据提供方内部错误(-3000) 这个错误,请问是怎么回事,是不是有什么东西没释放。procedure sp_T002_T028_SearchInsertW
(
P_OUTCURSOR OUT refCursorType,
P_ORGANCODE IN VARCHAR2,
P_REPORTDATE IN VARCHAR2,
P_CHECKTIME IN VARCHAR2,
P_METHODCODE IN VARCHAR2,
P_PREGSTATUSCODE IN VARCHAR2,
P_FEEDBACKCODE IN VARCHAR2,
P_CHECKDOCTORCODE IN VARCHAR2,
P_CHECKDOCTORNAME IN VARCHAR2,
P_BATCHMAN IN VARCHAR2,
P_BATCHIP IN VARCHAR2
)
as
--变量列表
V_ERRMESSAGE VARCHAR2(1000); --异常信息(用以接收 Oracle 抛出的异常信息)
e exception;
begin insert into mistable028( MisField028A00,
MisField028A01,
MisField028A02,
MisField028A03,
MisField028A04,
MisField028A05,
MisField028A06,
MisField028A07,
MisField028A08,
MisField028A09,
MisField028A10,
MisField028A11,
MisField028A12,
MisField028A13,
MisField028A14,
MisField028A15,
MisField028A19,
MisField028A20,
MisField028A21,
MisField028A24,
MisField028A25,
MisField028A27,
MisField028A28,
MisField028A29,
MisField028A30)
select
substr(P_ORGANCODE,0,6)||'000000',
P_REPORTDATE as ReportDate,
sysdate as StatsDate,
MISFIELD002A02,
MISFIELD002A03,
MISFIELD002A04,
MISFIELD002A05,
MISFIELD002A06,
MISTABLE002ID,
MISFIELD002A09,
'女' as sex,
TO_DATE(P_CHECKTIME,'YYYY-MM-DD HH24:MI:SS') as ExamTime,
P_METHODCODE as ExamMethod,
P_PREGSTATUSCODE as PREGSTATUS,
P_FEEDBACKCODE as FEEDBACK,
P_CHECKDOCTORNAME as ExamDoctorName,
P_BATCHMAN as BatchMan,
P_BATCHIP as BatchIP,
Sysdate as BatchDate,
MISFIELD002A32,
'0' as DeleteFlag,
MISFIELD002A59,
MISFIELD002A60,
MISFIELD002A57,
P_CHECKDOCTORCODE as DoctorCode
from mistable002
where
MISFIELD002A02 = P_ORGANCODE
and
ceil(months_between(sysdate,MISFIELD002A10)/12) >=15
and
ceil(months_between(sysdate,MISFIELD002A10)/12) <=49
and
(MISFIELD002A15 = '21' or MISFIELD002A15 = '22' or MISFIELD002A15 = '23')
and
(
MISFIELD002A58 = '400' or MISFIELD002A58 = '300' or MISFIELD002A58 = '100'
or MISFIELD002A58 = '100' or MISFIELD002A58 = '110' or MISFIELD002A58 = '120'
or MISFIELD002A58 = '130' or MISFIELD002A58 = '140' or MISFIELD002A58 = '190'
or MISFIELD002A58 = '200' or MISFIELD002A58 = '500' or MISFIELD002A58 = '600'
or MISFIELD002A58 = '610' or MISFIELD002A58 = '620' or MISFIELD002A58 = '630'
or MISFIELD002A58 = '690' or MISFIELD002A58 = '900'
or (MISFIELD002A58 = '820' and ceil(months_between(sysdate,MISFIELD002A60)/12) <=12)
or (MISFIELD002A58 = '810' and ceil(months_between(sysdate,MISFIELD002A60)/12) <=12)
);
--提交操作
COMMIT;
OPEN P_OUTCURSOR FOR
SELECT '1','操作成功' FROM DUAL;
--异常处理
EXCEPTION
WHEN E THEN
OPEN P_OutCursor FOR
SELECT '0','操作失败' FROM DUAL;
WHEN OTHERS THEN
V_ERRMESSAGE := SQLERRM;
ROLLBACK; OPEN P_OutCursor FOR
SELECT '0',V_ERRMESSAGE FROM DUAL;
end sp_T002_T028_SearchInsertW;
存储过程调试正常,可以批量插入数据,但这个存储过程一执行,这台机器上所有的数据库操作均报上面的错误!
(
P_OUTCURSOR OUT refCursorType,
P_ORGANCODE IN VARCHAR2,
P_REPORTDATE IN VARCHAR2,
P_CHECKTIME IN VARCHAR2,
P_METHODCODE IN VARCHAR2,
P_PREGSTATUSCODE IN VARCHAR2,
P_FEEDBACKCODE IN VARCHAR2,
P_CHECKDOCTORCODE IN VARCHAR2,
P_CHECKDOCTORNAME IN VARCHAR2,
P_BATCHMAN IN VARCHAR2,
P_BATCHIP IN VARCHAR2
)
as
--变量列表
V_ERRMESSAGE VARCHAR2(1000); --异常信息(用以接收 Oracle 抛出的异常信息)
e exception;
begin insert into mistable028( MisField028A00,
MisField028A01,
MisField028A02,
MisField028A03,
MisField028A04,
MisField028A05,
MisField028A06,
MisField028A07,
MisField028A08,
MisField028A09,
MisField028A10,
MisField028A11,
MisField028A12,
MisField028A13,
MisField028A14,
MisField028A15,
MisField028A19,
MisField028A20,
MisField028A21,
MisField028A24,
MisField028A25,
MisField028A27,
MisField028A28,
MisField028A29,
MisField028A30)
select
substr(P_ORGANCODE,0,6)||'000000',
P_REPORTDATE as ReportDate,
sysdate as StatsDate,
MISFIELD002A02,
MISFIELD002A03,
MISFIELD002A04,
MISFIELD002A05,
MISFIELD002A06,
MISTABLE002ID,
MISFIELD002A09,
'女' as sex,
TO_DATE(P_CHECKTIME,'YYYY-MM-DD HH24:MI:SS') as ExamTime,
P_METHODCODE as ExamMethod,
P_PREGSTATUSCODE as PREGSTATUS,
P_FEEDBACKCODE as FEEDBACK,
P_CHECKDOCTORNAME as ExamDoctorName,
P_BATCHMAN as BatchMan,
P_BATCHIP as BatchIP,
Sysdate as BatchDate,
MISFIELD002A32,
'0' as DeleteFlag,
MISFIELD002A59,
MISFIELD002A60,
MISFIELD002A57,
P_CHECKDOCTORCODE as DoctorCode
from mistable002
where
MISFIELD002A02 = P_ORGANCODE
and
ceil(months_between(sysdate,MISFIELD002A10)/12) >=15
and
ceil(months_between(sysdate,MISFIELD002A10)/12) <=49
and
(MISFIELD002A15 = '21' or MISFIELD002A15 = '22' or MISFIELD002A15 = '23')
and
(
MISFIELD002A58 = '400' or MISFIELD002A58 = '300' or MISFIELD002A58 = '100'
or MISFIELD002A58 = '100' or MISFIELD002A58 = '110' or MISFIELD002A58 = '120'
or MISFIELD002A58 = '130' or MISFIELD002A58 = '140' or MISFIELD002A58 = '190'
or MISFIELD002A58 = '200' or MISFIELD002A58 = '500' or MISFIELD002A58 = '600'
or MISFIELD002A58 = '610' or MISFIELD002A58 = '620' or MISFIELD002A58 = '630'
or MISFIELD002A58 = '690' or MISFIELD002A58 = '900'
or (MISFIELD002A58 = '820' and ceil(months_between(sysdate,MISFIELD002A60)/12) <=12)
or (MISFIELD002A58 = '810' and ceil(months_between(sysdate,MISFIELD002A60)/12) <=12)
);
--提交操作
COMMIT;
OPEN P_OUTCURSOR FOR
SELECT '1','操作成功' FROM DUAL;
--异常处理
EXCEPTION
WHEN E THEN
OPEN P_OutCursor FOR
SELECT '0','操作失败' FROM DUAL;
WHEN OTHERS THEN
V_ERRMESSAGE := SQLERRM;
ROLLBACK; OPEN P_OutCursor FOR
SELECT '0',V_ERRMESSAGE FROM DUAL;
end sp_T002_T028_SearchInsertW;
存储过程调试正常,可以批量插入数据,但这个存储过程一执行,这台机器上所有的数据库操作均报上面的错误!
解决方案 »
- Linux as 4 命令行安装 Oracle10G问题
- 关于让两个oracle数据库的数据同步的问题
- c#简易计算器的代码
- Oracle Enterprise manager 的问题 请帮忙,谢谢!
- 各位大侠,请求一个oracle存储过程和临时表的问题!急急!
- 很急!请问Orale 9i企业版和Oracle Lite有什么区别?都能开发部署吗?是否像Sql Server和MSDE?
- Enterprise Manager 10g操作疑惑,急急急!
- 数据库查询
- 如何限制用户的登录时间呢?
- oracle含有游标的包,存储过程取结果集的问题!
- 程序包或函数处于无效状态
- 超级问题:Oracle数据库记录的导入!!!!
---------------------------------------------------
我在程序里执行才出现这种问题,调试时执行多少遍都没事。