Cursor (oracle)

Vladimir Naprstek vladimir.naprstek na prodeco.cz
Pátek Červen 15 15:10:13 CEST 2001


Dobrý den,
dnes se celý den trápím s jedním dotazem, který potřebuji dát do
kurzoru:

  CURSOR data(c_id IN INTEGER) IS
   SELECT position,
          subassembly,
          fmt_sub,
          count,
          name,
          norm,
          material,
          category,
          weight,
          spec_desc,
          spec_supp,
          note
   FROM bom
   WHERE drawing = c_id
   UNION
   SELECT TO_NUMBER(NULL) position,
          TO_NUMBER(NULL) subassembly,
          NULL fmt_sub,
          TO_NUMBER(NULL) count,
          NULL name,
          NULL norm,
          NULL material,
          NULL category,
          TO_NUMBER(NULL) weight,
          NULL spec_desc,
          NULL spec_supp,
          NULL note
   FROM webdb.dual100
   WHERE rownum < 16;
   ORDER BY 1;

(krátké vysvětlení: jedná se o data pro kusovník výkresu - to je ta
první část, ke které je přidáno ještě 15 prázdných záznamů - to je ta
druhá část [tabulka webdb.dual100 je obdobou tabulky dual, jen má 100
řádků]. Výsledek je použit pro webový formulář).

A teď: pokud dotaz spustím samostatně v sqlplus, tak proběhne správně.
Pokud jej mám v kurzoru v proceduře, tak po zavolání obdržím následující
chybovou hlášku:

ORA-00937: not a single-group group function
ORA-06512: at "DRAWINGS.MANAGE_DOC", line 593  <- tady je definice toho
kurzoru
ORA-06512: at "DRAWINGS.MANAGE_DOC", line 706  <- tady je otevření
kurzoru (FOR rec IN data(...) LOOP)

No a nemohu na nic přijít. V dokumentaci jsem žádné omezení na dotazy v
kurzoru nenašel (tedy našel, ale nic odpovídajícího).



-- 
Vladimír Náprstek	e-mail: vladimir.naprstek na prodeco.cz
VITKOVICE - PRODECO, a.s.
Masarykova 51		tel: +420 417 26631, 26524
416 78 Teplice		fax: +420 417 26544


Další informace o konferenci Test