数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
BULK COLLECT读取含空日期字段的BUG

作者:未知 来源:月光软件站 加入时间:2005-6-5 月光软件站

总述:Oracle 9201中,在PL/SQL中使用BULK COLLECT读取含有空日期字段的表时会产生Ora-0331错误,并造成数据库连接断开。
数据库版本说明:

Oracle9i Enterprise Edition Release 92010 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 92010 - Production
Windows 2000 Version 50 Service Pack 4, CPU type 586

11:22:49 SQL> create table test
11:23:07   2  (id number11:23:07   3   entertime date11:23:07   4   state varchar2(1)11:23:07   5   state_date date)
11:23:07   6  partition by hash(id);

表已创建。

已用时间:  00: 00: 0000
11:23:07 SQL> insert into test values(seq_testnextval,null,0,sysdate);

已创建 1 行。

已用时间:  00: 00: 0000
11:23:21 SQL> /

已创建 1 行。

已用时间:  00: 00: 0000
11:23:23 SQL> /

已创建 1 行。

已用时间:  00: 00: 0000
11:23:24 SQL> /

已创建 1 行。

已用时间:  00: 00: 0000
11:23:24 SQL> insert into test values(seq_testnextval,sysdate,0,sysdate);

已创建 1 行。

已用时间:  00: 00: 0000
11:23:34 SQL> /

已创建 1 行。

已用时间:  00: 00: 0000
11:23:35 SQL> /

已创建 1 行。

已用时间:  00: 00: 0000
11:23:35 SQL> /

已创建 1 行。

已用时间:  00: 00: 0000
11:23:36 SQL> commit;

提交完成。

已用时间:  00: 00: 0000
11:23:39 SQL> select * from test;

        ID ENTERTIME  S STATE_DATE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
---------- ---------- - ----------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
         9            0 18-5月 -05                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
        10            0 18-5月 -05                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
        11            0 18-5月 -05                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
        12            0 18-5月 -05                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
        13 18-5月 -05 0 18-5月 -05                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
        14 18-5月 -05 0 18-5月 -05                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
        15 18-5月 -05 0 18-5月 -05                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
        16 18-5月 -05 0 18-5月 -05                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      

已选择8行。

已用时间:  00: 00: 0001
11:23:43 SQL> create or replace procedure p_test as
11:23:50   2    type tb_test is table of test%rowtype;
11:23:50   3    cursor cs_test is
11:23:50   4      select * from test;
11:23:50   5    ar_test tb_test;
11:23:50   6  begin
11:23:50   7    open cs_test;
11:23:50   8    loop
11:23:50   9      fetch cs_test bulk collect
11:23:50  10        into ar_test limit 5;
11:23:50  11      for i in 1  ar_testcount loop
11:23:50  12        dbms_outputput_line(ar_test(i)entertime);
11:23:50  13      end loop;
11:23:50  14      exit when cs_test%notfound;
11:23:50  15    end loop;
11:23:50  16    close cs_test;
11:23:50  17  end;
11:23:52  18  /

过程已创建。

已用时间:  00: 00: 0000
11:23:53 SQL> exec p_test;
BEGIN p_test; END;

*
ERROR 位于第 1 行:
ORA-03113: 通信通道的文件结束
已用时间:  00: 00: 0002
11:24:01 SQL> spool off

以下来自Oracle支持网站,原始的Bug#2269035可能由于时间过久无法找到了。

Bug 号     2669115
已归档     14-NOV-2002     已更新     18-NOV-2002
产品     Oracle Server - Enterprise Edition     产品版本     92010
平台     Microsoft Windows (32-bit)     平台版本     无数据
数据库版本     92010     影响平台     Generic
优先级     Severe Loss of Service     状态     Closed, Duplicate Bug
基本 Bug     2269035     修复产品版本     无数据

问题陈述:

ORA-3114 OCCURS WHEN BULK COLLECT INTO USED TO STORE ROWS INTO A PLSQL TABLE
 
*** 11/14/02 06:15 am ***
Customer Tar # (Mandatory for Customer Bugs): 2724438999
Problem description:
-------------------
A procedure has been created with a cursor and the FETCH  BULK COLLECT INTO
option based on the dept table
It works fine It fails if a date column is added into the table and change
the code of the procedure accordingly
Error: ORA-03114: not connected to ORACLE, occurs and sqlplus session
disconnected from the database
This happens only with 92010 database Since it doesn't occur with
92020 database on solaris, I am not
sure whether it has been fixed in this version This patch is not available
for Windows NT/2000
Keywords:
--------
stored procedure, bulk collect into, fetch, date column
Testcase location:
-----------------
Testcase step-by-step instructions:
----------------------------------
1) Connect to scott schema
2) Create a procedure using the following code:
create or replace Procedure dept_list is
TYPE DeptRecTab IS TABLE OF dept%ROWTYPE index by pls_integer;
dept_recs DeptRecTab;
CURSOR c1 IS
SELECT deptno, dname, loc FROM dept;
BEGIN
OPEN c1;
FETCH c1 BULK COLLECT INTO dept_recs limit 4;
for i in 14 loop
dbms_outputput_line ('looping i: ' || i);
dbms_outputput_line ('Dept Name: ' || dept_recs(i)dname);
end loop;
dbms_outputput_line ('closing cursor');
close c1;
END;
/
3) Execute the procedure
4) Add one more date column in dept table using:
alter table dept add (crdate date);
5) Re-create the proceduce with the following modified code:
create or replace Procedure dept_list is
TYPE DeptRecTab IS TABLE OF dept%ROWTYPE index by pls_integer;
dept_recs DeptRecTab;
CURSOR c1 IS
SELECT deptno, dname, loc, crdate FROM dept;
BEGIN
OPEN c1;
FETCH c1 BULK COLLECT INTO dept_recs limit 4;
for i in 14 loop
dbms_outputput_line ('looping i: ' || i);
dbms_outputput_line ('Dept Name: ' || dept_recs(i)dname);
end loop;
dbms_outputput_line ('closing cursor');
close c1;
END;
6) Execute the procedure It will fail with the error ORA-03114: not
connected to ORACLE
Generic/Port-specific findings:
----------------------------------
Did you test with the latest version? Yes
Rep? Platform Client Client Ver RDBMS Ver
---- ------------ --------- ------------- ------------
Y MS Windows 2000 80600 92010
Y MS Windows NT 80600 92010
N Sun SPARC Solaris 92020 92020
Available workarounds:
---------------------
None
Related bugs:
------------
Did you search for duplicate bugs?
Yes Bug:2202677 Abstract: ORA-3113 FROM BULK COLLECT INTO TABLE OF RECORDS
The bug says it has been fixed in 920 But it reproduces in 92010
Additional information:
----------------------
*** 11/14/02 06:29 am *** (CHG: Sta->36 G/P->G Asg->NEW OWNER)
*** 11/14/02 06:29 am ***
Testcase is specific to 92+ versions
Crashes on 9201 on Solaris - ie gives ORA-3113 In trace is:
ORA-07445: exception encountered: core dump [ldxeti()+20] [SIGSEGV]
[Address not mapped to object] [0x0] [] []
Works on 9202 and 10i (RDBMS_MAIN_SOLARIS_021108)
This is a duplicate of bug 2269035




相关文章

相关软件