Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

EXTPROC problem ORA-06522 error

zoffobNov 4 2016 — edited Nov 7 2016

Hello Everybody.

I want to call C program from PL/SQL but still without success (I spend sever hours on google I have tried almost everything), but I am still getting this error:

ORA-06520: PL/SQL: Error loading external library

ORA-06522: Unable to load DLL

My Config:

ORACLE: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

ORACLE_CLIENT: 12c - 32bit - runtime

OS: Windows 10 - 64bit

# listener.ora Network Configuration File: C:\ORACLE\product\12.1.0\dbhome_1\NETWORK\ADMIN\listener.ora

# Generated by Oracle configuration tools.

C source

#include <stdio.h>

int getVal(int a)

{  

   return a*2;

}

int main()

{   

  return getVal(2);

}

C compilation

gcc -c z1.c

gcc -shared -o z1.dll z1.o

Copy DLL file

I copy the z1.dll into the C:\ORACLE\product\12.1.0\dbhome_1\BIN
and also to the C:\ORACLE_CLIENT\product\12.1.0\client_1\BIN\

listener.ora - on SERVER

TRACE_LEVEL_LISTENER = ADMIN

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = xxxxxx )(PORT = 1521))

    )

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY = IPC_CALL32))

    )

  )

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = ZOFFOB.erni.ch)

      (ORACLE_HOME = C:\ORACLE\product\12.1.0\dbhome_1)

      (SID_NAME = ZOFFO)

    )

    (SID_DESC =

      (ORACLE_HOME = C:\ORACLE\product\12.1.0\dbhome_1)

      (SID_NAME = PLSExtProc)

      (PROGRAM = extproc)

      (ENVS = "EXTPROC_DLLS=ANY")

    )

  )

ADR_BASE_LISTENER = C:\ORACLE\product\12.1.0\dbhome_1\log

tnsnames.ora - ON CLIENT and SERVER

# tnsnames.ora Network Configuration File: C:\ORACLE\product\12.1.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora

# Generated by Oracle configuration tools.

ZOFFO =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = xxxxx)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = ZOFFOB.erni.ch)

    )

  )

EXTPROC_CONNECTION_DATA=

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = IPC)(KEY = IPC_CALL32))

    )

    (CONNECT_DATA =

      (SID = PLSExtProc)

      (PRESENTATION = RO)

    )

  )

Connected as SYS

Library:

CREATE OR REPLACE LIBRARY z1_lib AS 'C:\ORACLE\product\12.1.0\dbhome_1\bin\z1.dll';

Package and Call Specification

CREATE OR REPLACE FUNCTION z1_run(p_a IN INTEGER) RETURN PLS_INTEGER AS

  LANGUAGE c

  LIBRARY sys.z1_lib NAME "getVal";

CREATE OR REPLACE PACKAGE c_pack AS

   FUNCTION z1_run(p_a IN PLS_INTEGER) RETURN PLS_INTEGER;

END;

CREATE OR REPLACE PACKAGE BODY c_pack AS

  FUNCTION z1_run(p_a IN PLS_INTEGER) RETURN PLS_INTEGER AS

    LANGUAGE c

    LIBRARY sys.z1_lib NAME "getVal";

END;

TEST

BEGIN

  dbmS_OUTPUT.PUT_LINE( c_pack.z1_run(2) );

END;

When I run the test I still have the same error describe in the begging

ORA-06520: PL/SQL: Error loading external library

ORA-06522: Unable to load DLL

I have tried everything but still same error, please can you tell me what is the problem.

Thank You

JZ

This post has been answered by odie_63 on Nov 7 2016
Jump to Answer

Comments

Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Dec 5 2016
Added on Nov 4 2016
19 comments
3,132 views