🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #51776

Re: DBD::Oracle i problem z "wyciaganiem" CLOB-a

#51776
From: menth0l
Date: Fri, 26 Feb 2010 07:19
43 lines
3307 bytes
On 8 Lut, 19:02, menth0l <ment...@remove.this.o2.pl> wrote:
> Dziś natrafiłem na dziwny problem.. Otóż mam tabelkę (BD: Oracle 10g
> Express), w której jednym z pól jest CLOB. Próbowałem wyciągać dane z
> tabeli za pomocą składowanej procedury (piszę kod z pamięci- chodzi raczej
> o ideę):
>
> use DBI;
> use DBD::Oracle qw(:ora_types);
> (...)
> my $resultset;
> my $stmt = $connection.prepare("BEGIN\nSP_GETRECS(:1);\nEND;");
> $stmt->bind_param_inout(1, \$resultset, 0, { ora_type => ORA_RSET });
> $stmt->execute; # wykonuje sie bez bledow
> my $records = $resultset->fetchall_arrayref; # perl sie wywala
>
> Przy wywołaniu metod fetch* na danych zwroconych po execute interpreter
> perla się po prostu wywala (win32, wyskakuje slynne okienko z przyciskiem
> 'nie wysyłaj').
>
> Metodą prób i błędów ustaliłem, że winne temu jest pole typu CLOB.
> Usuwając je z zapytania w procedurze powyższy kod działa poprawnie. Co
> ciekawe, jawne wywołanie zapytania:
>
> my $stmt = $connection->prepare("SELECT * FROM TABELA");
> $stmt->execute;
> $data = $stmt->fetchall_arrayref
>
> ..działa poprawnie (trzeba tylko ustawić odpowiednia wartość dla
> LongReadLen w parametrach połączenia ale i bez tego nie dochodzi do zwisu
> interpretera).
>
> Z przyczyn niezależnych ode mnie nie mogę jednak zrezygnować z użycia
> procedury i przekazywania rekordów poprzez zmienna typu REF CURSOR. Czy
> ktoś może spotkał się z tym problemem? Może chociaż jakieś sugestie co
> jeszcze sprawdzić/czego się czepić bo przyznam ze pomysły powoli mi się
> konczą a rozwiązania nie widać. W googlu nie nic znalazłem na temat takich
> problemów, z tego co wyczytałem powinno działać to jak każde inne
> zapytanie.. Czy możliwe, że nie jest to wina DBI tylko np. wadliwego
> sterownika lub złej konfiguracji serwera/czegoś innego? Wszelkie sugestie
> mile widziane :)

Jak się okazało problemem była stara wersja DBD::Oracle - 1.21. Po
ręcznym skompilowaniu wersji 1.24 problem zniknął...
Technical Details
Message-ID: <b02b7965-79ec-4d13-b2b8-e24118f6aa53@t41g2000yqt.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!t41g2000yqt.googlegroups.com!not-for-mail
References: <hkpjjb$19si$1@news.mm.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!t41g2000yqt.googlegroups.com!not-for-mail
From: menth0l <cementos@gmail.com>
Newsgroups: pl.comp.lang.perl
Subject: Re: DBD::Oracle i problem z "wyciaganiem" CLOB-a
Date: Thu, 25 Feb 2010 23:19:46 -0800 (PST)
Organization: http://groups.google.com
Lines: 56
Message-ID: <b02b7965-79ec-4d13-b2b8-e24118f6aa53@t41g2000yqt.googlegroups.com>
References: <hkpjjb$19si$1@news.mm.pl>
NNTP-Posting-Host: 193.138.208.6
Mime-Version: 1.0
X-Trace: posting.google.com 1267168786 3782 127.0.0.1 (26 Feb 2010 07:19:46 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Fri, 26 Feb 2010 07:19:46 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: t41g2000yqt.googlegroups.com; posting-host=193.138.208.6;  posting-account=n8CVxwoAAAAETmDMMn3gSQdxf6EXMNe6
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.8)  Gecko/20100202 Firefox/3.5.8,gzip(gfe),gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit