on 06-24-2013 9:22 AM
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
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
93 | |
10 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.