2015-05-15 16 views
9

io sono sempre un po 'strano comportamento della procedura di Pro-C come illustrato di seguito:query SQL in Pro-C non riesce con errore: 02115

#define BGHCPY_TO_ORA(dest, source) \ 
{ \ 
(void)strcpy((void*)(dest).arr, (void*)(source)); \ 
(dest).len = strlen((const char *)(dest).arr); \ 
} 
#define BGHCPY_FROM_ORA(dest, source) \ 
{ \ 
(void)memcpy((void*)(dest), (void*)(source).arr, (size_t)(source).len); \ 
(dest)[(source).len] = '\0'; \ 
} 

long fnSQLMarkProcessed (char *pszRowId, char *pszMarker) 
{ 
    BGHCPY_TO_ORA (O_rowid_stack, pszRowId); 
    BGHCPY_TO_ORA (O_cust_processed, pszMarker); 

    EXEC SQL 
     UPDATE document_all 
      SET processed_by_bgh = :O_cust_processed 
     WHERE rowid = :O_rowid_stack; 

    return (sqlca.sqlcode); 
} 

I valori argomenti di input passati alla funzione di cui sopra è

pszRowId = [AAAF1lAAIAABOoRAAB], pszMarker=X 

la query restituisce il codice di errore: 02115 con seguente messaggio:

SQL Error:02115 Code interpretation problem -- check COMMON_NAME usage 

sto usando Oracle come database back-end.

Qualcuno può fornirmi informazioni su quali sono le possibili cause di questa query non riuscita?

Qualsiasi aiuto è molto apprezzato.

Bandiere utilizzati durante PRO-C Compilation è definito di seguito:

------/u01/app/oracle/product/8.1.6/ORACLE_HOME/bin/proc `echo -Dbscs5 -Dsun5 -I/export/home/bscsobw/bscs6/src/CoreDumpIssue/final_Code_Fix_004641 -DNDEBUG -DSunOS53 -D_POSIX_4SOURCES -I/usr/generic++/generic++2.5.3.64_bit/include -DFEATURE_212298 -DBSCS_CONFIG -I/export/home/bscsobw/bscs6//src/bat/include -DFEATURE_00203808_GMD -DFEATURE_00241737 -DORACLE_DB_BRAND -I/u01/app/oracle/product/8.1.6/ORACLE_HOME/rdbms/demo -I/u01/app/oracle/product/8.1.6/ORACLE_HOME/precomp/public -I/export/home/bscsobw/bscs6/src/CoreDumpIssue/final_Code_Fix_004641/include -I../bat/include -DFEATURE61717 -DFEATURE52824 -DFEATURE56178 -DD236312_d -DSDP -g | sed -e 's/-I/INCLUDE=/g' -e 's/-D[^ ]=[^ ]*//g' -e 's/-D\([^ ]*\)/DEFINE=\1/g'` select_error=no DEFINE=FEATURE61717 DEFINE=FEATURE52824 DEFINE=FEATURE56178 \ 
       lines=yes iname=bgh_esql.pc oname=bgh_esql.c lname=bgh_esql.lis 
+0

Questo non è Oracle codice PL/SQL. – user272735

+0

Mi dispiace che sia stato un errore, questo è il segmento di codice di Pro-C. c'è un comportamento intermittente mostrato dalla procedura "fnSQLMarkProcessed". –

+1

Mostrare la riga di comando completa del compilatore. – OldProgrammer

risposta

1

penso, si controlla questo messaggio:

[[email protected] ~]$ oerr sql 2115 
02115, 00000, "Code interpretation problem -- check COMMON_NAME usage" 
// *Cause: With PRO*FORTRAN, this error occurs if the precompiler option 
//   COMMON_NAME is specified incorrectly. **With other Oracle 
//   Precompilers, this error occurs when the precompiler cannot 
//   generate a section of code.** 
// *Action: With Pro*FORTRAN, when using COMMON_NAME to precompile two or 
//   more source modules, make sure to specify a different common name 
//   for each module. With other Oracle Precompilers, if the error 
//   persists, call customer support for assistance. 

modo da poter determinare, che problema non nelle variabili.

prega, provare a utilizzare il codice come questo:

long fnSQLMarkProcessed (char *pszRowId, char *pszMarker) 
{ 
    BGHCPY_TO_ORA (O_rowid_stack, pszRowId); 
    BGHCPY_TO_ORA (O_cust_processed, pszMarker); 

    EXEC SQL UPDATE document_all 
      SET processed_by_bgh = :O_cust_processed 
     WHERE rowid = :O_rowid_stack; 

    return (sqlca.sqlcode); 
} 
Problemi correlati