Article View: pl.comp.lang.perl
Article #51776Re: DBD::Oracle i problem z "wyciaganiem" CLOB-a
From: menth0l
Date: Fri, 26 Feb 2010 07:19
Date: Fri, 26 Feb 2010 07:19
43 lines
3307 bytes
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-mailReferences:
<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