cancel
Showing results for 
Search instead for 
Did you mean: 

ODBC FETCH Driver does not support this function

Former Member
0 Kudos

Hello, I try to program a cursor with ODBC in COBOL

I do a simple DECLARE CURSOR / OPEN / FETCH but we have a problem :

when it executes the FETCH, there is a sql error :

sqlcode : -10000

sqlerrml : +00037

sqlerrmc : Driver does not support this function

Can you give me the good syntax ?

Here is the program :

      *------------------------------------------------------------------

       IDENTIFICATION DIVISION.

       PROGRAM-ID.   "LECTURE".

       AUTHOR.        ALEX.

       DATE-WRITTEN.  21 06 13.

      *

       ENVIRONMENT DIVISION.

       CONFIGURATION SECTION.

      *

       INPUT-OUTPUT SECTION.

       FILE-CONTROL.

      *

      *

       DATA DIVISION.

       FILE SECTION.

      *

      *

       WORKING-STORAGE SECTION.

      *

       77  W-I                         PIC 9(8).

      *

     

           EXEC SQL INCLUDE SQLCA END-EXEC.

     

           EXEC SQL

                BEGIN DECLARE SECTION

           END-EXEC.

      *     

       01  ART-ENR.

           02 ART-MARQUE         PIC X(4).

           02 ART-MACHIN         PIC X(4).

           02 ART-PIECE          PIC XXX.

          

          

       01  W-USER                   PIC X(4).

      *

           EXEC SQL

                END DECLARE SECTION

           END-EXEC.

      *

      *

       PROCEDURE DIVISION.

      *

       DEBUT.

           MOVE "ALEX"                 TO W-USER.

          

           EXEC SQL

              WHENEVER SQLERROR STOP

           END-EXEC.

          

           EXEC SQL

              CONNECT TO 'MAXDB' USER 'ALEX.ALEX'

           END-EXEC.

           IF SQLCODE NOT= 0           STOP RUN RETURNING 1.

          

           INITIALIZE ART-ENR.

           EXEC SQL

            DECLARE IEARTIDI_C CURSOR FOR

            SELECT

               ART_MARQUE      , ART_MACHIN      , ART_PIECE

             FROM IEARTI

           END-EXEC.

           EXEC SQL

              OPEN IEARTIDI_C

           END-EXEC.      

          

       BOU-LECT-FICH.        

           EXEC SQL

            FETCH IEARTIDI_C

             INTO

               :ART-MARQUE     , :ART-MACHIN     , :ART-PIECE     

           END-EXEC.

           IF SQLCODE NOT= 0           GO TO P-FIN-LECT-FICH.

             

           ADD 1                       TO W-I.

          

           IF W-I = 100000

              GO TO P-FIN-LECT-FICH.

             

           IF (FUNCTION MOD (W-I, 10000) = 0)

              DISPLAY W-I.

       

           GO TO BOU-LECT-FICH.

          

       P-FIN-LECT-FICH.

     

           EXEC SQL

              CLOSE IEARTIDI_C

           END-EXEC.

      

           EXEC SQL

              COMMIT WORK RELEASE

           END-EXEC.

           IF SQLCODE NOT= 0           STOP RUN RETURNING 1.

          

       FIN-LECT-FICH.

      *   

           DISPLAY W-I.

           STOP RUN.

Thanks for your help

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Ok, I solved the problem by updating unixODBC to the last version (2.3.1).

It seems that unixODBC had problems with previous versions in a 64bit environnement.

Answers (0)