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