🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych
Article #183429

Re: przeładowanie pakietu

#183429
From: bagracz
Date: Fri, 10 Jul 2009 14:22
59 lines
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-mail
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>

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