Oracle Packages & Embedded C/SQL
From: Kimberly M Brooks <kim_at_aethelbehrt.cs.odu.edu>
Date: 13 Oct 1993 16:54:17 GMT
Message-ID: <KIM.93Oct13125418_at_aethelbehrt.cs.odu.edu>
/
Date: 13 Oct 1993 16:54:17 GMT
Message-ID: <KIM.93Oct13125418_at_aethelbehrt.cs.odu.edu>
How do you call an SQL Package from within a Embedded C program? I create a package and execute it in SQL*Plus. The package is created without any errors. In my C program, I call the package from within a loop something like this:
for (;;) {
EXEC SQL EXECUTE
BEGIN
printf("Inside inner loop\n");
xmrms_actions.rec_count( :jcn_count );
printf("value: %f\n", xmrms_actions.test_variable);
END;
END-EXEC;
EXEC SQL COMMIT;
break;
} /* end loop */
where "xmrms_actions" is the package name and "rec_count" is a package procedure. The package looks like this:
CREATE OR REPLACE PACKAGE xmrms_actions IS
/* Define externally visible types, cursors, exceptions. */
PROCEDURE rec_count( num_rec IN OUT INTEGER );
test_variable CONSTANT REAL := 10.00;
END xmrms_actions;
/
CREATE OR REPLACE PACKAGE BODY xmrms_actions IS
/* Define rec_count function. */
PROCEDURE rec_count ( num_rec IN OUT INTEGER ) IS
cnt INTEGER;
BEGIN
num_rec := 0;
SELECT COUNT(jcn)
INTO cnt
FROM temp_table;
num_rec := cnt;
END rec_count;
END xmrms_actions;
/
I cannot get any results. It seems that the program is not even entering the loop since "Inside inner loop" is never printed. Any suggestions?
P.S. Please email any suggestions to kim_at_cs.odu.edu. Thanks! Received on Wed Oct 13 1993 - 17:54:17 CET
