Bonjour,
Config : Oracle 9i, Windows 2000.
J'ai créé une dll C (lib1.dll) qui elle-même utilise une dll (lib2.dll). Ces 2 dll sont dans un répertoire C:\Lib
J'ai créé une libraire :
J'ai créé ma procédure externe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part CREATE OR REPLACE LIBRARY MA_LIB AS 'C:\Lib\lib1.dll'
Mais qu'en j'essai d'exécuter :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 FUNCTION LibEntryPoint(id IN PLS_INTEGER) RETURN PLS_INTEGER AS LANGUAGE C NAME "libEntryPoint" LIBRARY "MA_LIB" WITH CONTEXT PARAMETERS(CONTEXT, id INT);
J'obtiens l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 DECLARE err NUMBER; BEGIN err := LibEntryPoint(1); END;
Le listener.ora est configuré:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ORA-06520: PL/SQL: Error loading external library ORA-06522: Unable to load DLL
et le tnsname.ora contient :
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
20
21 LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = nufas4)(PORT = 1521)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (ENVS="EXTPROC_DLLS=ANY") (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\Programs\ora92) (PROGRAM = extproc) ) )
J'ai également essayé d'ajouter le répertoire où se trouvent les 2 dll dans la variable d'environnement "path" mais ça ne change rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 EXTPROC_CONNECTION_DATA= (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) (CONNECT_DATA = (SID = PLSExtProc)) )
Par contre, si je modifie la dll "lib1" pour qu'elle n'utilise plus la dll "lib2" ça fonctionne...
Quelqu'un peut-il m'aider ?
Merci
Partager