Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.tools -> DLL Call From a Stored Procedure.
Hi,
I have written a DLL (called as "test.dll") in C++.
I want to call some functions in it from within a stored procedure in ORACLE8's SQL terminal. But I have faced a problem : although all of the declarations seem as correct, when I run the script in an SQL terminal, it simply halts the terminal and waits forever without doing anything at all.. Why ? How should I proceed to solve the issue ?
I have read all of the corresponding documentation "PL/SQL Developer's Guide" and "Applications Developer's Guide" and tried all the examples there. They all worked as correct, but my code.
I need your kind helps in advance,
Regards,
-Robert
int LoadIt(char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, int); -------------------- code begins ------------------
create or replace library test_library is 'C:\ORANT\Test_DLL\test.dll';
CREATE OR REPLACE PACKAGE test_util
AS
FUNCTION LOADIT(
username IN VARCHAR2, password IN VARCHAR2, database IN VARCHAR2, SourceDataFilePath IN VARCHAR2, ControlTableName IN VARCHAR2, DestinationTableName IN VARCHAR2, RejectFilePath IN VARCHAR2, dtInFormat IN VARCHAR2, dtOutFormat IN VARCHAR2, dtSeparator IN VARCHAR2, BatchSize IN BINARY_INTEGER) RETURN PLS_INTEGER;
CREATE OR REPLACE PACKAGE BODY test_util AS
FUNCTION LOADIT(
username IN VARCHAR2, password IN VARCHAR2, database IN VARCHAR2, SourceDataFilePath IN VARCHAR2, ControlTableName IN VARCHAR2, DestinationTableName IN VARCHAR2, RejectFilePath IN VARCHAR2, dtInFormat IN VARCHAR2, dtOutFormat IN VARCHAR2, dtSeparator IN VARCHAR2, BatchSize IN BINARY_INTEGER) RETURN PLS_INTEGER
username STRING, password STRING, database STRING, SourceDataFilePath STRING, ControlTableName STRING, DestinationTableName STRING, RejectFilePath STRING, dtInFormat STRING, dtOutFormat STRING, dtSeparator STRING, BatchSize INT)
CREATE OR REPLACE PROCEDURE UseIt
AS
lusername VARCHAR2(50) := 'test'; lpassword VARCHAR2(50) := 'test'; ldatabase VARCHAR2(50) := ''; lSourceDataFilePath VARCHAR2(50) := ''; lControlTableName VARCHAR2(50) := ''; lDestinationTableName VARCHAR2(50) := ''; lRejectFilePath VARCHAR2(50) := ''; ldtInFormat VARCHAR2(50) := ''; ldtOutFormat VARCHAR2(50) := ''; ldtSeparator VARCHAR2(2) := '/'; lBatchSize BINARY_INTEGER := 5; result BINARY_INTEGER; BEGIN result := test_util.LOADIT(lusername, lpassword, ldatabase, lSourceDataFilePath, lControlTableName, lDestinationTableName, lRejectFilePath, ldtInFormat, ldtOutFormat, ldtSeparator, lBatchSize ); DBMS_OUTPUT.PUT_LINE('Result is : ' || result); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('INTERNAL ERROR');END;
set serveroutput on;
execute UseIt;
/
-------------------- code ends ------------------Received on Mon Jul 31 2000 - 00:00:00 CDT
![]() |
![]() |