DanisOnTheFlux
DanisOnTheFlux

Reputation: 15

How to pass an associative array as a parameter for a stored function?

I want to pass an array in a stored functionbut it doesn't want to compile and I don't know what I did wrong.

My assiociative array :

  TYPE etages IS TABLE OF NUMBER
  INDEX BY pls_integer;
  etage  etages;
  ID  number;

My Function header :

FUNCTION SHOWRES
 (P_OBJET IN NUMBER
 ,P_DATE_DEBUT IN DATE
 ,P_DATE_FIN IN DATE
 ,PERIODE IN VARCHAR2
 ,P_LIBELLE IN VARCHAR2
 ,P_ENTETE_CAL IN VARCHAR2
 ,P_DETAIL IN VARCHAR2
 ,P_USERID IN VARCHAR2
 ,P_USER IN VARCHAR2
 ,P_SOCIETE IN VARCHAR2
 ,P_COLSPAN IN VARCHAR2
 ,P_INTERVAL_BASE IN NUMBER
 ,P_INTERVAL IN OUT NUMBER
 ,p_reservations IN etages
 ) RETURN BOOLEAN;

Upvotes: 1

Views: 173

Answers (1)

Koen Lostrie
Koen Lostrie

Reputation: 18665

Here is a working example:

DECLARE
  TYPE etagestyp IS TABLE OF NUMBER INDEX BY pls_integer;
  l_etage  etagestyp;
  FUNCTION etagecount (p_etages etagestyp) RETURN NUMBER
  IS
  BEGIN
    RETURN p_etages.COUNT;
  END;
BEGIN
  l_etage(1) := 100;
  l_etage(2) := 200;
  dbms_output.put_line(etagecount(l_etage));
END;
/

2


PL/SQL procedure successfully completed.

It's impossible to know what is wrong in your code but this example could guide you in the right direction.

Upvotes: 2

Related Questions