ďťż
 
[Oracle 10.2] klauzula WHERE i RowNum i... ďťż
 
[Oracle 10.2] klauzula WHERE i RowNum i...
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 10.2] klauzula WHERE i RowNum i...



jerry - 16-11-2006 00:22
[Oracle 10.2] klauzula WHERE i RowNum i...
  Witam,
Mam funkcję zwracającą NUMBER: fnWFlGetIProcessParameter()

Mam zapytanie w którym ją wywołuję - z tymi argumentami ona zwraca
wartość 3 - sprawdziłem select funkcja from dual:

select b.*, rownum rn
from (
select pi.status wk_tekst3, pi.processdef_type wk_tekst4
from twflprocessinstances pi
where pi.createworker_id = fnWFlGetIProcessParameter( 'this', '',
396,'wk_integer',null)
order by wk_tekst3
) b

To zapytanie nie zwraca żadnych wierszy... Choć dla pi.createworker_id =
3 powinno ich być w diabła.
Dlaczego dodanie na końcu :

where rownum <=5

powoduje, że dostaję w wyniku 5 wierszy?
Z pustego i Salomon, a jednak...

Jeżeli też zamiast
pi.createworker_id = fnWFlGetIProcessParameter( 'this', '',
396,'wk_integer',null)
wstawię na sztywno
pi.createworker_id = 3
to zwraca tyle wierszy ile trzeba, i gdy dostawię ograniczenie rownum
<=5 logiczne i zrozumiałe jest, że z XXX wierszy dostaję 5. Jednak gdy
jest tam funkcja to z 0 wierszy dostaję 5 - bug?

Jeżeli zaś wytnę z zapytania order by wk_tekst3
to też działa świetnie razem z funkcją.

Czy ktoś może mi wyjaśnić te zależności





Michał Kuratczyk - 16-11-2006 00:22

  jerry wrote:
> Czy ktoś może mi wyjaśnić te zależności
Mógłbyś podać pełny przykład - z odpowiednimi CREATE TABLE,
i INSERTami, żeby można było sobie to uruchomić u siebie?

--
Michał Kuratczyk




jerry - 16-11-2006 00:22

 
> Mógłbyś podać pełny przykład - z odpowiednimi CREATE TABLE,
> i INSERTami, żeby można było sobie to uruchomić u siebie?

Niestety to nie pójdzie tak prosto - zwłaszcza funkcja jest złozona
biznesowo (funkcje wewnętrzne) i odwołuje się do wielu tabel i sekwencji :(
Mnie najbardzie jzadziwia fakt, dlaczego po dodaniu klauzuli WHERE
rownum <= x select, który zwracał pusty wynika, teraz zwraca to co
trzeba ??? Gdzie sens...

Ja to rozwiązałem tak, że zamiast podstawiać pod tamto id = funkcja
wstawiam: id = (select funkcja from dual) no ale niesmak pozostaje.




Michał Kuratczyk - 16-11-2006 00:22

  jerry wrote:
>> Mógłbyś podać pełny przykład - z odpowiednimi CREATE TABLE,
>> i INSERTami, żeby można było sobie to uruchomić u siebie?
> Niestety to nie pójdzie tak prosto - zwłaszcza funkcja jest złozona
> biznesowo (funkcje wewnętrzne) i odwołuje się do wielu tabel i sekwencji
No to lipa - ja zrobiłem sobie jakieś tabele, jakąś funkcję i analogiczne
zapytanie i działa bez problemu.

> Mnie najbardzie jzadziwia fakt, dlaczego po dodaniu klauzuli WHERE
> rownum <= x select, który zwracał pusty wynika, teraz zwraca to co
> trzeba ??? Gdzie sens...
Ano jest to dziwne i dlatego chętnie bym to pomęczył, ale cóż - mój test
działa, a gołym okiem nie widzę u Ciebie błędów, więc kiepska sprawa. Może
być bug - zdarza się, więc radzę zgłosić SRa.

--
Michał Kuratczyk





Michał Kuratczyk - 16-11-2006 00:22

  Michał Kuratczyk wrote:
>>> Mógłbyś podać pełny przykład - z odpowiednimi CREATE TABLE,
>>> i INSERTami, żeby można było sobie to uruchomić u siebie?
>> Niestety to nie pójdzie tak prosto - zwłaszcza funkcja jest złozona
>> biznesowo (funkcje wewnętrzne) i odwołuje się do wielu tabel i sekwencji
> No to lipa - ja zrobiłem sobie jakieś tabele, jakąś funkcję i analogiczne
> zapytanie i działa bez problemu.
Oczywiście jeśli masz czas, to spróbuj uprościć swój problem - może przy
okazji znajdziesz przyczynę. Jeśli ciało funkcji zastąpisz przez "return
3", to też jest problem? Jeśli tak, to już masz dużo mniej potencjalnych
źródeł problemu.

--
Michał Kuratczyk




jerry - 16-11-2006 00:23

  > Jeśli ciało funkcji zastąpisz przez "return
> 3", to też jest problem?

Takj zrobiłem. Funkcja zwraca wartość = 3 i działa bezproblemowo.
Dalej jednak nie mam czasu drążyć tą funkcję - bo ona jest zatrważająca.
Do problemu jednak wrócę w przyszłości, bo jest dość intrygujący.
Dziękuję Ci za poświęcony czas.
Pozdrawiam,
  • 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
  • quentinho.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