Charles Jardine wrote:
> I have encountered a problem with the 'extended' support for
> objects in DBD::Oracle. Specifically, if $dbh->{ora_objects}
> is true, any attempt to fetch a nested table of objects
> causes perl to crash with a segmentation fault.
> 
> Versions:
> OS: SLES10 SP2 (64bit)
> Oracle: 10.2.0.4 (64bit)
> Perl: 5.10.0 (64bit)
> DBI: 1.609
> DBD::Oracle: 1.23
> 
> The following SQL*Plus script to set up the demonstration table is based
> on an example in the DBD::Oracle pod:
> 
> CREATE OR REPLACE TYPE GRADELIST AS TABLE OF NUMBER;
> /
> 
> CREATE OR REPLACE TYPE STUDENT AS OBJECT(
>       NAME          VARCHAR2(60),
>       SOME_GRADES   GRADELIST);
> /
> 
> CREATE OR REPLACE TYPE STUDENTS_T AS TABLE OF STUDENT;
> /
> 
> CREATE TABLE GROUPS(       GRP_ID        NUMBER(4),
>       GRP_NAME      VARCHAR2(10),
>       STUDENTS      STUDENTS_T)
>     NESTED TABLE STUDENTS STORE AS GROUP_STUDENTS_TAB
>      (NESTED TABLE SOME_GRADES STORE AS GROUP_STUDENT_GRADES_TAB);
> 
> INSERT INTO GROUPS (GRP_ID, GRP_NAME, STUDENTS) VALUES (
>    1234,
>    'ABCD',
>    STUDENTS_T(STUDENT('A.N. Other', GRADELIST(5,6,7)))
> );
> 
> The following perl script segfaults on the call of fetch:
> 
> #!/usr/local/bin/perl -w
> 
> use strict;
> use DBI;
> 
> my $dbh = DBI->connect('dbi:Oracle:', <credentials>, {RaiseError=>1});
> 
> $dbh->{ora_objects} = 1;
> 
> my $sth = $dbh->prepare("select * from groups"); $sth->execute;
> 
> print("about to fetch\n");
> 
> $sth->fetch;
> 
> print("fetched\n");
> 
> $sth->finish; $dbh->disconnect;
> 
> 

Same for me but I am using an Oracle client older than the Oracle server
- are you? Have you tried using a client that matches the server? I
cannot tell if you are running to a local or remote oracle. In the past
when I have got "OCI-21500: internal error code, arguments: [kocgpn129]"
errors it has been down to attempting to use a new feature in Oracle
with an old client.

Martin
-- 
Martin J. Evans
Easysoft Limited
http://www.easysoft.com

Reply via email to