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!

'C' precompiler issue ? Stored Procedure invoked from 'C' program...

626351May 5 2009 — edited May 5 2009
HELP... I am out of ideas... have a stored procedure that is called from a big 'C' program that isn't returning the rows that it should. I copied & pasted the section of code containing the stored procedure call into a new stand-alone 'C' program and it works fine. I made sure both 'C' programs were passing the same input parameters, both 'C' programs were compiled using the same Makefile, both 'C' programs have the same include files, both 'C' programs physically exist on the same server and are using the same version of Oracle and Sun Solaris. We noticed a slight difference in the '.c' file generated at compile time. Below are the details (in case someone can decipher this stuff)...

PIECE OF STAND-ALONE PROGRAM (that works):
---------------------------------------------------------------------
EXEC SQL BEGIN DECLARE SECTION;
double db_bot_lat;
double db_left_lon;
double db_top_lat;
double db_right_lon;
EXEC SQL END DECLARE SECTION;

EXEC SQL EXECUTE
BEGIN
gateway.SELECT_RESOLV(:cd_prefix, :db_bot_lat, :db_left_lon, :db_top_lat,
:db_right_lon, :exist_cd, :exist_cell, :exist_frame,
:exist_prod, :exist_size, :exist_sec_class);
END;
END-EXEC;

PIECE OF STAND-ALONE PROGRAM ".C" FILE (that works):
----------------------------------------------------------------------------------
/* EXEC SQL EXECUTE
BEGIN
gateway.SELECT_RESOLV(:cd_prefix, :db_bot_lat, :db_left_lon, :db_top_lat,
:db_right_lon, :exist_cd, :exist_cell, :exist_frame,
:exist_prod, :exist_size, :exist_sec_class);
END;
END-EXEC; */

{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 11;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin gateway . SELECT_RESOLV ( :cd_prefix , :db_bot_lat , :d\
b_left_lon , :db_top_lat , :db_right_lon , :exist_cd , :exist_cell , :exist_fr\
ame , :exist_prod , :exist_size , :exist_sec_class ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )36;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)cd_prefix;
sqlstm.sqhstl[0] = (unsigned long )6;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)&db_bot_lat;
sqlstm.sqhstl[1] = (unsigned long )sizeof(double);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = (unsigned char *)&db_left_lon;
sqlstm.sqhstl[2] = (unsigned long )sizeof(double);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( short *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = (unsigned char *)&db_top_lat;
sqlstm.sqhstl[3] = (unsigned long )sizeof(double);
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = (unsigned char *)&db_right_lon;
sqlstm.sqhstl[4] = (unsigned long )sizeof(double);
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( short *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned long )0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = (unsigned char *)exist_cd;
sqlstm.sqhstl[5] = (unsigned long )21;
sqlstm.sqhsts[5] = ( int )0;
sqlstm.sqindv[5] = ( short *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned long )0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = (unsigned char *)exist_cell;
sqlstm.sqhstl[6] = (unsigned long )11;
sqlstm.sqhsts[6] = ( int )0;
sqlstm.sqindv[6] = ( short *)0;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned long )0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = (unsigned char *)exist_frame;
sqlstm.sqhstl[7] = (unsigned long )13;
sqlstm.sqhsts[7] = ( int )0;
sqlstm.sqindv[7] = ( short *)0;
sqlstm.sqinds[7] = ( int )0;
sqlstm.sqharm[7] = (unsigned long )0;
sqlstm.sqadto[7] = (unsigned short )0;
sqlstm.sqtdso[7] = (unsigned short )0;
sqlstm.sqhstv[8] = (unsigned char *)exist_prod;
sqlstm.sqhstl[8] = (unsigned long )9;
sqlstm.sqhsts[8] = ( int )0;
sqlstm.sqindv[8] = ( short *)0;
sqlstm.sqinds[8] = ( int )0;
sqlstm.sqharm[8] = (unsigned long )0;
sqlstm.sqadto[8] = (unsigned short )0;
sqlstm.sqtdso[8] = (unsigned short )0;
sqlstm.sqhstv[9] = (unsigned char *)&exist_size;
sqlstm.sqhstl[9] = (unsigned long )sizeof(int);
sqlstm.sqhsts[9] = ( int )0;
sqlstm.sqindv[9] = ( short *)0;
sqlstm.sqinds[9] = ( int )0;
sqlstm.sqharm[9] = (unsigned long )0;
sqlstm.sqadto[9] = (unsigned short )0;
sqlstm.sqtdso[9] = (unsigned short )0;
sqlstm.sqhstv[10] = (unsigned char *)exist_sec_class;
sqlstm.sqhstl[10] = (unsigned long )5;
sqlstm.sqhsts[10] = ( int )0;
sqlstm.sqindv[10] = ( short *)0;
sqlstm.sqinds[10] = ( int )0;
sqlstm.sqharm[10] = (unsigned long )0;
sqlstm.sqadto[10] = (unsigned short )0;
sqlstm.sqtdso[10] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}

PIECE OF BIG PROGRAM (that doesn't work):
--------------------------------------------------------------
EXEC SQL BEGIN DECLARE SECTION;
double db_bot_lat;
double db_left_lon;
double db_top_lat;
double db_right_lon;
EXEC SQL END DECLARE SECTION;

EXEC SQL EXECUTE
BEGIN
gateway.SELECT_RESOLV(:cd_prefix, :db_bot_lat, :db_left_lon, :db_top_lat,
:db_right_lon, :exist_cd, :exist_cell, :exist_frame,
:exist_prod, :exist_size, :exist_sec_class);
END;
END-EXEC;

PIECE OF BIG PROGRAM ".C" FILE (that doesn't work):
---------------------------------------------------------------------------
/* EXEC SQL EXECUTE
BEGIN
gateway.SELECT_RESOLV(:cd_prefix, :db_bot_lat, :db_left_lon, :db_top_lat,
:db_right_lon, :exist_cd, :exist_cell, :exist_frame,
:exist_prod, :exist_size, :exist_sec_class);
END;
END-EXEC; */

{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 31;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin gateway . SELECT_RESOLV ( :cd_prefix , :db_bot_lat , :d\
b_left_lon , :db_top_lat , :db_right_lon , :exist_cd , :exist_cell , :exist_fr\
ame , :exist_prod , :exist_size , :exist_sec_class ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )5741;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)cd_prefix;
sqlstm.sqhstl[0] = (unsigned long )6;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)&db_bot_lat;
sqlstm.sqhstl[1] = (unsigned long )sizeof(double);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = (unsigned char *)&db_left_lon;
sqlstm.sqhstl[2] = (unsigned long )sizeof(double);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( short *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = (unsigned char *)&db_top_lat;
sqlstm.sqhstl[3] = (unsigned long )sizeof(double);
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = (unsigned char *)&db_right_lon;
sqlstm.sqhstl[4] = (unsigned long )sizeof(double);
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( short *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned long )0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = (unsigned char *)exist_cd;
sqlstm.sqhstl[5] = (unsigned long )21;
sqlstm.sqhsts[5] = ( int )0;
sqlstm.sqindv[5] = ( short *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned long )0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = (unsigned char *)exist_cell;
sqlstm.sqhstl[6] = (unsigned long )11;
sqlstm.sqhsts[6] = ( int )0;
sqlstm.sqindv[6] = ( short *)0;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned long )0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = (unsigned char *)exist_frame;
sqlstm.sqhstl[7] = (unsigned long )13;
sqlstm.sqhsts[7] = ( int )0;
sqlstm.sqindv[7] = ( short *)0;
sqlstm.sqinds[7] = ( int )0;
sqlstm.sqharm[7] = (unsigned long )0;
sqlstm.sqadto[7] = (unsigned short )0;
sqlstm.sqtdso[7] = (unsigned short )0;
sqlstm.sqhstv[8] = (unsigned char *)exist_prod;
sqlstm.sqhstl[8] = (unsigned long )9;
sqlstm.sqhsts[8] = ( int )0;
sqlstm.sqindv[8] = ( short *)0;
sqlstm.sqinds[8] = ( int )0;
sqlstm.sqharm[8] = (unsigned long )0;
sqlstm.sqadto[8] = (unsigned short )0;
sqlstm.sqtdso[8] = (unsigned short )0;
sqlstm.sqhstv[9] = (unsigned char *)&exist_size;
sqlstm.sqhstl[9] = (unsigned long )sizeof(int);
sqlstm.sqhsts[9] = ( int )0;
sqlstm.sqindv[9] = ( short *)0;
sqlstm.sqinds[9] = ( int )0;
sqlstm.sqharm[9] = (unsigned long )0;
sqlstm.sqadto[9] = (unsigned short )0;
sqlstm.sqtdso[9] = (unsigned short )0;
sqlstm.sqhstv[10] = (unsigned char *)exist_sec_class;
sqlstm.sqhstl[10] = (unsigned long )5;
sqlstm.sqhsts[10] = ( int )0;
sqlstm.sqindv[10] = ( short *)0;
sqlstm.sqinds[10] = ( int )0;
sqlstm.sqharm[10] = (unsigned long )0;
sqlstm.sqadto[10] = (unsigned short )0;
sqlstm.sqtdso[10] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 2 2009
Added on May 5 2009
1 comment
801 views