Kuidas kutsuda PostgreSQLis välja funktsiooni või protseduuri, mille mõni parameeter on SMALLINT tüüpi?

Postitas Erki Eessaar
Oletame, et andmebaasis on loodud funktsioon f_lopeta_teenus, mille parameeter p_teenuse_kood on SMALLINT tüüpi.

Ü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 korrektseks väljakutseks on vajalik lause:

SELECT f_lopeta_teenus(p_teenuse_kood:=436::SMALLINT);

::SMALLINT teeb tüübiteisenduse tüüpi SMALLINT.

Hinda postitust:

Keskmine hinne : Pole veel hinnanguid!