Oracle 8i, referencja na kursor
Robert - 10-02-2006 12:12
Oracle 8i, referencja na kursor
Witam, robie cos takiego:
TYPE JednCurTyp IS REF CURSOR;
...........
OPEN crs_jedn FOR
SELECT DISTINCT RJA.idJednA
FROM REJA RJA, REJRA RJRA
WHERE ....
pozniej FETCH ... i wywala mi: ORA-01475: must reparse cursor to change bind variable datatype
nie wiecie o co moze chodzic ? moze zamiast TYPE JednCurTyp IS REF CURSOR; dac cos typu: TYPE JednCurTyp IS REF CURSOR RETURN REJA%Rowtype;
tylko ze jak dam %Rowtype to chyba jak chce caly wiersz a ja biore 1 kolumne. Z %Rowtype kompilator wywala mi niezgodnosc typow...
pozdrawiam Robert
Robert - 11-02-2006 22:52
Witam ponownie. Dokladniej wyglada to tak: jest ta referencja na kursor i zawsze pobieram varchar2(15) z tej tabeli. Robie : TYPE JednCurTyp IS REF CURSOR; no i jak to puszczam bezposrednio na serwerze to jest ok, natomiast jak puszcze z Delphi5 lub CBuilder6 z uzyciem komponentow ODAC to wlasnie wywala mi ten blad: ORA-01475: must reparse cursor to change bind variable datatype wartosc pobieram tak : fetch crs_jedn into tmp_idJedn; gdzie tmp_idJedn varcha2(15)
Problem moze w tym ze czasami dostane null zamiast varchar2 jak nic nie znajdzie, hmmmm. W sumie nie podaje tez typu wyniku, da sie to jakos zrobic w tym przypadku ? moze by pomoglo... a moze to kwestia jakichs ustawien w komponencie odaca ? Probowalem tak intuicyjnie dac : TYPE JednCurTyp IS REF CURSOR RETURN varchar2; ale kompilator nie przyjmuje (twierdzi ze to musi byc record type). Troche to dziwne - wiem co pobieram a nie moge tego okreslic eksplicite :/ Macie jakis pomysl... ?
z gory dzieki za pomoc Robert
> > TYPE JednCurTyp IS REF CURSOR; > > .......... > > OPEN crs_jedn FOR > > SELECT DISTINCT RJA.idJednA > > FROM REJA RJA, REJRA RJRA > > WHERE .... > > pozniej FETCH ... i wywala mi: ORA-01475: must reparse cursor to change > bind variable datatype > > nie wiecie o co moze chodzic ? moze zamiast TYPE JednCurTyp IS REF CURSOR; > dac cos typu: > TYPE JednCurTyp IS REF CURSOR RETURN REJA%Rowtype; > > tylko ze jak dam %Rowtype to chyba jak chce caly wiersz a ja biore 1 > kolumne. Z %Rowtype kompilator wywala mi niezgodnosc typow... > > pozdrawiam > Robert >
Lucyna Witkowska - 13-02-2006 10:32
Robert <rgrzes@lexpolonica.pl> napisał: > Witam ponownie. Dokladniej wyglada to tak: jest ta referencja na kursor i > zawsze pobieram varchar2(15) z tej tabeli. Robie : > TYPE JednCurTyp IS REF CURSOR; no i jak to puszczam bezposrednio na serwerze > to jest ok, natomiast jak puszcze z Delphi5 lub CBuilder6 z uzyciem > komponentow ODAC to wlasnie wywala mi ten blad: > ORA-01475: must reparse cursor to change bind variable datatype > wartosc pobieram tak : > fetch crs_jedn into tmp_idJedn; gdzie tmp_idJedn varcha2(15)
> Problem moze w tym ze czasami dostane null zamiast varchar2 jak nic nie > znajdzie, hmmmm. W sumie nie podaje tez typu wyniku, da sie to jakos zrobic > w tym przypadku ? moze by pomoglo... a moze to kwestia jakichs ustawien w > komponencie odaca ? Probowalem tak intuicyjnie dac : TYPE JednCurTyp IS REF > CURSOR RETURN varchar2; ale kompilator nie przyjmuje (twierdzi ze to musi > byc record type). Troche to dziwne - wiem co pobieram a nie moge tego > okreslic eksplicite :/ Macie jakis pomysl... ?
Jak chcesz podac typ wyniku, stworz typ record, w ktorym będzie jeden skladnik:
type rja_rec is record ( rja_idjedna rja.idjednA%type );
type JednCurTyp IS REF CURSOR return rja_rec;
Ale nie wiem, jak to bedzie dzialalo z odac.
Pozdrowienia, LW
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
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.pldoc.pisz.plpdf.pisz.plchinska-zupka.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 |
|