Kodulehed
[385] - Andmebaasid II (ITI0207) (sügis 2023)
Esiletöstetud Kiirvalik
Lisainfo Kõige olulisemate tegevuste kiirvalik. Failide saatmiseks valige Vastamine alt sobiv ülesanne.
Üldist
Materjalid
LisainfoMaterjalide kataloogid.
Värvilised mummud tähistavad hinnangulist kataloogide lugemise vajadust. Roheline - suurim, kollane - keskmine, punane või mummuta - väikseim
Isiklik
Lisainfo Info ainult Sulle - teised kasutajad seda ei näe
Abi
Lisainfo Võimalus küsida õppejõult abi (nagu foorum, kus saab küsida küsimusi ja kommenteerida vastuseid)
Mitmesugust
Abi / Kasutajatugi / PostgreSQL

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Anonüümne (17.12.2023 11:03):
Üritan käivitada PostgreSQLis kasutaja-defineeritud funktsiooni, kuid saan vastuse, et sellist funktsiooni pole loodud. Mis võib olla põhjus?
Vastus (17.12.2023 11:25): Funktsiooni identifikaator e signatuur moodustub selle identifikaatorist ja sisendparameetritest. PostgreSQLis võib ühes ja samas skeemis olla mitu samanimelist funktsiooni, millel on erinev arv parameetreid või erinevat tüüpi parameetrid. Seega samast funktsioonist saab olla justkui mitu realisatsiooni ning konkreetne kasutatav realisatsioon valitakse vastavalt antud sisenditele (argumentidele). See on ülelaadimise omadus.

Oletame, et andmebaasis on loodud funktsioon f_lopeta_teenus, mille esimene parameeter on p_teenus_kood, mille tüüp on SMALLINT ja teine parameeter on p_selgitus, mis on tüüpi TEXT.

1. Süsteem eeldab argumendi (sisendväärtuse) alusel vale parameetri andmetüüpi.

Vale: SELECT f_lopeta_teenus(p_teenus_kood:=30, p_selgitus:='Osutus ebapopulaarseks');
Süsteem eeldab, et parameeter p_teenus_kood on tüüpi INTEGER.

Õige: SELECT f_lopeta_teenus(p_teenus_kood:=30::SMALLINT, p_selgitus:='Osutus ebapopulaarseks');
::SMALLINT - tüübiteisendus tüüpi SMALLINT.

2. Parameetri nimi on väljakutses valesti kirjutatud.

Vale: SELECT f_lopeta_teenus(p_teenuse_kood:=30::SMALLINT, p_teenus_selgitus:='Osutus ebapopulaarseks');
Õige: SELECT f_lopeta_teenus(p_teenus_kood:=30::SMALLINT, p_selgitus:='Osutus ebapopulaarseks');

3. Osadele parameetritele ei anta väljakutses väärtust (argumenti) (parameetritele saab funktsiooni loomisel anda vaikimisi väärtuse ja siis ei pea nendele väljakutses väärtust andma).

Vale: SELECT f_lopeta_teenus(p_teenus_kood:=30::SMALLINT);
Õige: SELECT f_lopeta_teenus(p_teenus_kood:=30::SMALLINT, p_selgitus:='Osutus ebapopulaarseks');

4. Funktsiooni parameetritele viitamiseks ei kasutata nime ning argumentide järjekord on väljakutses vale.

Vale
: SELECT f_lopeta_teenus('Osutus ebapopulaarseks', 30::SMALLINT);
Õige: SELECT f_lopeta_teenus(30::SMALLINT, 'Osutus ebapopulaarseks');

5. Funktsiooni otsitaks valest skeemist. Vaikimisi skeem on public. Oletame, et funktsioon on hoopis skeemis funktsioonid.

Vale: SELECT f_lopeta_teenus(p_teenus_kood:=30, p_selgitus:='Osutus ebapopulaarseks');
Õige: SELECT funktsioonid.f_lopeta_teenus(p_teenus_kood:=30::SMALLINT, p_selgitus:='Osutus ebapopulaarseks');

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!