ďťż
 
[Oracle] bledna inicjalizacja funkcji agregujacej ďťż
 
[Oracle] bledna inicjalizacja funkcji agregujacej
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[Oracle] bledna inicjalizacja funkcji agregujacej



aPI - 13-11-2005 11:58
[Oracle] bledna inicjalizacja funkcji agregujacej
  Po dlugim czasie udalo mi sie pokonac wczorajszy problem, a tu od razu
narodzil sie nowy :/
Pisze funkcje agregujaca w C++. Kazda z trzech funkcji ,
ODCIAggregateInitialize, ODCIAggregateIterate, ODCIAggregateTerminate
uruchamia sie oddzielnie (z zewnetrzej procedury) bezproblemowo. Niestety,
kiedy chce uruchomic moja funkcje agregujaca, w pelni wykonuje sie tylko
ODCIAggregateInitialize, a nigdy pozostale dwie. Podczas wywolywania funkcji
agregujacej dostaje blad:

[1]: (Error): ORA-00600: kod błędu wewnętrznego, argumenty: [17099], [], [],
[], [], [], [], [] ORA-28576: utracone połączenie RPC z agentem procedury
zewnętrznej

Udalo mi sie dowiedziec, ze ORA-00600 [17099] to
"The error manager state is inconsistent"

Niestety nie wiem czym jest error manager ani gdzie go szukac no i czy w
ogole znajduje sie w zasiegu mojego kodu.

Zadaniem ODCIAggregateInitialize jest miedzy innymi utworzenie objetku,
ktore pozostale dwie przyjmuja jako argument. Nie wiem czy objekt ten jest
tworzony i czy wina lezy wlasnie po stronie blednej inicjalizacji argumentu
czy moze raczej po stronie tego tajemniczego error managera. Wklejam
definicje funkcji ODCIAggregateInitialize, ktora znajduje sie w Oracle
Pozostale dwie funkcje sa rowniez czlonkami obiektu MINDISTANCEIMPL . Jako
argument self pobieraja zainicjalizowany przez ODCIAggregateInitialize
argument sctx.

Dolaczam rowniez kod w C++. I prosze o pomoc :)

TYPE MINDISTANCEIMPL as object (

counter int,

static function ODCIAggregateInitialize(sctx IN OUT MinDistanceImpl)

return number as language C

library distance name "ODCIAggregateInitialize"

with context

parameters (

context,

sctx,

sctx INDICATOR STRUCT,

RETURN INDICATOR

)

===============================================

int ODCIAggregateInitialize(

OCIExtProcContext *context,

MinDistanceImpl * sctx,

MinDistanceImpl_ind * sctx_ind)

{

Handles_t handles;

GetHandles(context, &handles);

if (checkerr(&handles, OCIMemoryAlloc((dvoid*) handles.usrhp, handles.errhp,

(dvoid**) &sctx,

OCI_DURATION_STATEMENT,

(ub4) sizeof(MinDistanceImpl),

OCI_MEMORY_CLEARED)))

return ODCI_ERROR;

sctx_ind->_atomic=OCI_IND_NOTNULL;

sctx_ind->COUNTER=OCI_IND_NOTNULL;

void * vct = new vector<Coordinates>();

((vector<Coordinates>*)vct)->clear();

sctx->COUNTER = (int)vct;

return ODCI_SUCCESS;

}

static int checkerr(Handles_t* handles, sword status)

{

text errbuf[512]; /* error message buffer */

sb4 errcode; /* OCI error code */

switch (status)

{

case OCI_SUCCESS:

case OCI_SUCCESS_WITH_INFO:

return 0;

case OCI_ERROR:

OCIErrorGet ((dvoid*) handles->errhp, (ub4) 1, (text *) NULL, &errcode,

errbuf, (ub4) sizeof(errbuf), (ub4) OCI_HTYPE_ERROR);

sprintf((char*)errbuf, "OCI ERROR code %d",errcode);

break;

default:

sprintf((char*)errbuf, "Warning - error status %d",status);

break;

}

OCIExtProcRaiseExcpWithMsg(handles->extProcCtx, 29400, errbuf,

strlen((char*)errbuf));

return -1;

}

static int GetHandles(OCIExtProcContext* extProcCtx, Handles_t* handles)

{

/* store the ext-proc context in the handles struct */

handles->extProcCtx=extProcCtx;

/* Get OCI handles */

if (checkerr(handles, OCIExtProcGetEnv(extProcCtx, &handles->envhp,

&handles->svchp, &handles->errhp)))

return -1;

/* get the user handle */

if (checkerr(handles, OCIAttrGet((dvoid*)handles->svchp,

(ub4)OCI_HTYPE_SVCCTX,

(dvoid*)&handles->usrhp,

(ub4*) 0, (ub4)OCI_ATTR_SESSION,

handles->errhp)))

return -1;

return 0;

}





Sławomir Szyszło - 13-11-2005 11:58

  Dnia Sat, 12 Nov 2005 09:50:54 +0100, "aPI" <minics@op.LITERYpl> wklepał(-a):

>Po dlugim czasie udalo mi sie pokonac wczorajszy problem, a tu od razu
>narodzil sie nowy :/
>Pisze funkcje agregujaca w C++. Kazda z trzech funkcji ,
>ODCIAggregateInitialize, ODCIAggregateIterate, ODCIAggregateTerminate
>uruchamia sie oddzielnie (z zewnetrzej procedury) bezproblemowo. Niestety,
>kiedy chce uruchomic moja funkcje agregujaca, w pelni wykonuje sie tylko
>ODCIAggregateInitialize, a nigdy pozostale dwie. Podczas wywolywania funkcji
>agregujacej dostaje blad:
>
>[1]: (Error): ORA-00600: kod błędu wewnętrznego, argumenty: [17099], [], [],
>[], [], [], [], [] ORA-28576: utracone połączenie RPC z agentem procedury
>zewnętrznej
>
>Udalo mi sie dowiedziec, ze ORA-00600 [17099] to
>"The error manager state is inconsistent"

Błąd ORA-00600 to błąd krytyczny oznaczający zwykle, że trafiłeś na jakiegoś
buga. A wtedy to tylko Metalink cię ratuje... czasami.
Jaką masz wersję bazy?
--
Sławomir Szyszło mailto:slaszysz@poczta.onet.pl
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?grou...mp.bazy-danych




aPI - 13-11-2005 11:58

 
> Błąd ORA-00600 to błąd krytyczny oznaczający zwykle, że trafiłeś na
> jakiegoś
> buga. A wtedy to tylko Metalink cię ratuje... czasami.
> Jaką masz wersję bazy?

ORACLE V9.2.0.1.0 - Production vsnsta=0
Windows 2000 Version 5.1 Service Pack 2, CPU type 586

jestem studentem w zwiazku z czym nie mam dostepu do metalinka :(
Gdzies na experts-exchange znalazlem notatke (podobno wlasnie z metalinka)
wg ktorej
jest to nastepujacy blad:

DESCRIPTION:
The error manager state is inconsistent

FUNCTIONALITY:
Kernel Generic Error manager

IMPACT:
PROCESS FAILURE

niestety, zadna z sugestii umieszczonych w tym artykule nie okazala sie
pomocna :(

pozdrawiam
Marcin
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= Oracle 19g +Insert +Insert +Insert... [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?= =?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?= [oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?= [oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?= MSSQL Express czy Oracle Express =?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?= =?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • melooonka.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com