Üritades seda funktsiooni välja kutsuda lausega: SELECT f_lopeta_teenus(p_teenuse_kood:=436);
on tulemuseks veateade: ERROR: function f_lopeta_teenus(p_teenuse_kood => integer) does not exist LINE 1: select f_lopeta_teenus(p_teenuse_kood:=436);
Käivitatav funktsioon valitakse argumentide tüüpide alusel. Vaikimisi eeldus on, et literaali 436 poolt esitatav väärtus kuulub tüüpi INTEGER. Kuid funktsiooni parameeter on hoopis tüüpi SMALLINT. Seega käivitades
SELECT f_lopeta_teenus(p_teenuse_kood:=436);
, otsib tarkvara funktsiooni, mille signatuur (tunnus) on f_lopeta_teenus (INTEGER). Kuid andmebaasis pole sellise tunnusega funktsiooni, vaid on hoopis funktsioon tunnusega f_lopeta_teenus (SMALLINT). Sellest tuleneb veateade, et funktsiooni ei leitud.
Seega korrektseks väljakutseks on vajalik lause:
SELECT f_lopeta_teenus(p_teenuse_kood:=436::SMALLINT);
::SMALLINT teeb tüübiteisenduse tüüpi SMALLINT.
Alternatiivina võib kasutada tüübiteisenduseks CAST funktsiooni:SELECT f_lopeta_teenus(p_teenuse_kood:=CAST(436 AS SMALLINT);
Hinda postitust:
Keskmine hinne : Pole veel hinnanguid!