Bonjour,

J'ai un souci sur la compilation de ma fonction avec un database link que je tente d'ajouter:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
CREATE OR REPLACE FUNCTION SAS_UPGRADE_CHECK (V_LICENSE_ID NUMBER,p_base varchar2)
RETURN VARCHAR2
 
IS
    -- CUSTOMER VARS.
    V_PRODUCT         PRODUCTION.LICENSE.PRODUCT%TYPE;
    V_VERSION         PRODUCTION.LICENSE.VERSION%TYPE;
    V_MAINTEXPIRE     PRODUCTION.LICENSE.MAINTEXPIRE%TYPE;
    V_PORTCLASS_ID    PRODUCTION.LICENSE.PORTCLASS_ID%TYPE;
 .....
 
BEGIN
   -- Gets products
    SELECT DISTINCT PRODUCT, VERSION, MAINTEXPIRE, PORTCLASS_ID
    INTO V_PRODUCT, V_VERSION, V_MAINTEXPIRE, V_PORTCLASS_ID
    FROM PRODUCTION.LICENSE@p_base
    WHERE LICENSE_ID = V_LICENSE_ID;
....
Lors de la compilation, j'obtiens l'erreur suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Compilation errors for FUNCTION SALESADM.SAS_UPGRADE_CHECK 
Error: PL/SQL: ORA-04052: error occurred when looking up remote object PRODUCTION.LICENSE@P_BASE 
       ORA-00604: error occurred at recursive SQL level 1 
       ORA-02019: connection description for remote database not found 
Line: 40 
Text: FROM PRODUCTION.LICENSE@p_base 
Error: PL/SQL: SQL Statement ignored 
Line: 38 
Text: SELECT DISTINCT PRODUCT, VERSION, MAINTEXPIRE, PORTCLASS_ID 
Error: Hint: Parameter 'p_base' is declared but never used in 'SAS_UPGRADE_CHECK' 
Line: 1 
Text: CREATE OR REPLACE FUNCTION SAS_UPGRADE_CHECK (V_LICENSE_ID NUMBER,p_base varchar2)
Je comprends que le compilateur n'interprete pas p_base comme une variable mais directement comme le nom de la base distante.

Comment puis je proceder pour lui faire comprendre que p_base est une variable lui indiquant la base a intérroger?

Thanks for the help.
Lo.