Article View: pl.comp.bazy-danych
Article #183429Re: przeładowanie pakietu
From: bagracz
Date: Fri, 10 Jul 2009 14:22
Date: Fri, 10 Jul 2009 14:22
59 lines
3156 bytes
3156 bytes
On 10 Lip, 09:39, Maseł <mma...@poczta.onet.pl> wrote:
> A mozesz naszkicowac taki prayklad (pseudokod, nie koniecznie prawdziwe
> nazwy pakietow...) - bo wydaje mi sie, ze na razie nie do konca rozumiem
> opis problemu.
W dużym uproszczeniu:
Create or replace package PakietA
A integer default 0;
function getA return integer;
procedure iniZmiennePakietowe;
....
end;
Create or replace package body PakietA
....
function getA return integer
begin
return nvl(A,0);
end;
procedure iniZmiennePakietowe is
begin
A := 1;
end;
begin
iniZmiennePakietowe;
end;
oraz osobna funkcja (nie w pakiecie)
create or relace function sprawdzA return integer is
begin
return PakietA.getA;
end;
Tak więc w normalnych warunkach po zalogowaniu jesteśmy w sesji XXX.
Próba odwołania
select SprawdzA from dual;
zwróci 1 bo najpierw pakiet załaduje się do pamieci czyli odpali
iniZmiennePakietowe, która ustawi A na 1.
Jeśli jednak jesteśmy zalogowani dalej w sesji XXX i pakiet już jest w
pamieci i teraz z innej sesji Oracle zmienimy coś i przekompilujemy
specyfikację pakietu A to
select SprawdzA from dual;
zwróci 0.
ale
select PakietA.getA from dual;
zwróci 1 po uprzednim zgłoszeniu błędu o przestarzałej wersji pakietu
A i ponownym wykonaniu
Wniosek z tego taki, że wszystkie niezależne procedury mogące
odwoływać się do zmiennycm pakietowych powinny się znaleźć w pakiecie,
który ma sekcję ininicjalizującą te zmienne pakietowe.
Tak właśnie zrobiłem.
Muszę tylko jeszcze sprawdzić jak będą zachowywać się triggery
używające takich zmiennych.
Technical Details
Message-ID:
<980a3bc8-fd47-4c16-abe3-3750053c68be@32g2000yqj.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.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!32g2000yqj.googlegroups.com!not-for-mailReferences:
<d225d75f-7492-45e9-a79a-8cfbc61e930d@c2g2000yqi.googlegroups.com> <9d35caeb1a5b2cbc4f6c9dc635376835@masel.cs.put.poznan.pl> <aa5e688e-de53-4ecf-97a8-265fc8d87e8d@t13g2000yqt.googlegroups.com> <aad4f0722a7a95515581865d1c94a0a0@masel.cs.put.poznan.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.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!32g2000yqj.googlegroups.com!not-for-mail From: bagracz <imszcz@gmail.com> Newsgroups: pl.comp.bazy-danych Subject: Re: przeładowanie pakietu Date: Fri, 10 Jul 2009 07:22:53 -0700 (PDT) Organization: http://groups.google.com Lines: 64 Message-ID: <980a3bc8-fd47-4c16-abe3-3750053c68be@32g2000yqj.googlegroups.com> References: <d225d75f-7492-45e9-a79a-8cfbc61e930d@c2g2000yqi.googlegroups.com> <9d35caeb1a5b2cbc4f6c9dc635376835@masel.cs.put.poznan.pl> <aa5e688e-de53-4ecf-97a8-265fc8d87e8d@t13g2000yqt.googlegroups.com> <aad4f0722a7a95515581865d1c94a0a0@masel.cs.put.poznan.pl> NNTP-Posting-Host: 79.188.146.66 Mime-Version: 1.0 X-Trace: posting.google.com 1247235774 30626 127.0.0.1 (10 Jul 2009 14:22:54 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Fri, 10 Jul 2009 14:22:54 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: 32g2000yqj.googlegroups.com; posting-host=79.188.146.66; posting-account=yn4PmAoAAAAAgm7Aj3CVif2PN-tPm7xB User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11,gzip(gfe),gzip(gfe) X-HTTP-Via: 1.1 alfa-connect:3128 (squid/2.6.STABLE5) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit