"Je dois créer plusieurs fonctions avec Oracle PLSQL et PostgreSQL PLPGSQL. Elles doivent avoir le même nom mais le type du paramètre change. Est-ce possible ?"
Réponse :
Il est préférable d'éviter cela. En dehors de cas simples, attention aux règles de préséance pour être certain que la bonne fonction est appliquée.
Mais, oui, c'est possible, à la fois avec PostgreSQL et Oracle.
Exemple avec PostgreSQL 11 :
Code : Tout sélectionner
select version();
version
----------------------------------------------------------------------------------------------------------------
PostgreSQL 11.7 (Debian 11.7-0+deb10u1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
create or replace function test(text) returns text as
$$
begin
return 'TEXTE !';
end;
$$ LANGUAGE PLPGSQL;
create or replace function test(integer) returns text as
$$
begin
return 'ENTIER !';
end;
$$ LANGUAGE PLPGSQL;
select test('toto');
test
---------
TEXTE !
select test(0);
test
----------
ENTIER !
Code : Tout sélectionner
Live SQL 19.4.2, running Oracle Database 19c Enterprise Edition - 19.5.0.0.0
create or replace package touslestests
is
function test(val in varchar2) return varchar2;
function test(val in integer) return varchar2;
end;
create or replace package body touslestests
is
function test(val in varchar2) return varchar2 as
begin
return 'TEXTE !';
end;
function test(val in integer) return varchar2 as
begin
return 'ENTIER !';
end;
end;
select touslestests.test('toto') from dual;
TOUSLESTESTS.TEST('TOTO')
TEXTE !
select touslestest.test(0) from dual;
TOUSLESTESTS.TEST(0)
ENTIER !