Hi
I am a student at the University of Zaragoza and I am trying to create a COBOL program with SQL
I'm having problems using the WHERE clause in dbpre. My code is the following:
PGCTB-ACTION SECTION.
MAIN-PROCEDURE.
ACCEPT CARD-NUMBER.
EXEC SQL
SELECT pin INTO :PIN-DB FROM mytpv.Usuarios
WHERE numTarjeta = CARD-NUMBER
END-EXEC.
EVALUATE TRUE
WHEN DB-OK
CONTINUE
WHEN OTHER
PERFORM DB-STATUS
END-EVALUATE
DISPLAY PIN-DB.
PGCTB-ACTION-EXIT.
EXIT.
I'm searching for a row in my DB where "numTarjeta" matches the value introduced by the user.
The problem is that dbpre treats my variable "CARD-NUMBER" as a string, not as the value entered by the user.
The .cob generated by dbpre is the following
PGCTB-ACTION SECTION.
MAIN-PROCEDURE.
ACCEPT CARD-NUMBER.
DBPRE MOVE 8 TO SQLCA-SEQUENCE
* EXEC SQL
DBPRE * END-EXEC.
DBPRE MOVE LOW-VALUES TO SQLCA-STATEMENT
DBPRE MOVE 'SELECT pin FROM mytpv.Usu' TO SQLCA-STAT-LINE (1)
DBPRE MOVE 'arios WHERE numTarjeta = ' TO SQLCA-STAT-LINE (2)
DBPRE MOVE 'CARD-NUMBER ' TO SQLCA-STAT-LINE (3)
DBPRE CALL 'MySQL_query' USING SQLCA-STATEMENT
DBPRE END-CALL
DBPRE MOVE RETURN-CODE TO SQLCODE
DBPRE IF DB-OK
DBPRE CALL 'MySQL_use_result' USING SQLCA-RESULT (65)
DBPRE END-CALL
DBPRE IF SQLCA-RESULT (65) = NULL
DBPRE MOVE 100 TO SQLCODE
DBPRE ELSE
DBPRE MOVE 0 TO SQLCODE
DBPRE END-IF
DBPRE END-IF
DBPRE IF DB-OK
DBPRE CALL 'MySQL_fetch_row' USING SQLCA-RESULT (65)
DBPRE PIN-DB
DBPRE END-CALL
DBPRE IF SQLCA-RESULT (65) = NULL
DBPRE MOVE 100 TO SQLCODE
DBPRE ELSE
DBPRE MOVE 0 TO SQLCODE
DBPRE END-IF
DBPRE END-IF
EVALUATE TRUE
WHEN DB-OK
CONTINUE
WHEN OTHER
PERFORM DB-STATUS
END-EVALUATE
DISPLAY PIN-DB.
PGCTB-ACTION-EXIT.
EXIT.
If someone knows how to make this work I would be very grateful
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi
I am a student at the University of Zaragoza and I am trying to create a COBOL program with SQL
I'm having problems using the WHERE clause in dbpre. My code is the following:
PGCTB-ACTION SECTION.
MAIN-PROCEDURE.
ACCEPT CARD-NUMBER.
EXEC SQL
SELECT pin INTO :PIN-DB FROM mytpv.Usuarios
WHERE numTarjeta = CARD-NUMBER
END-EXEC.
I'm searching for a row in my DB where "numTarjeta" matches the value introduced by the user.
The problem is that dbpre treats my variable "CARD-NUMBER" as a string, not as the value entered by the user.
The .cob generated by dbpre is the following
PGCTB-ACTION SECTION.
MAIN-PROCEDURE.
ACCEPT CARD-NUMBER.
DBPRE MOVE 8 TO SQLCA-SEQUENCE
* EXEC SQL
DBPRE * END-EXEC.
DBPRE MOVE LOW-VALUES TO SQLCA-STATEMENT
DBPRE MOVE 'SELECT pin FROM mytpv.Usu' TO SQLCA-STAT-LINE (1)
DBPRE MOVE 'arios WHERE numTarjeta = ' TO SQLCA-STAT-LINE (2)
DBPRE MOVE 'CARD-NUMBER ' TO SQLCA-STAT-LINE (3)
DBPRE CALL 'MySQL_query' USING SQLCA-STATEMENT
DBPRE END-CALL
DBPRE MOVE RETURN-CODE TO SQLCODE
DBPRE IF DB-OK
DBPRE CALL 'MySQL_use_result' USING SQLCA-RESULT (65)
DBPRE END-CALL
DBPRE IF SQLCA-RESULT (65) = NULL
DBPRE MOVE 100 TO SQLCODE
DBPRE ELSE
DBPRE MOVE 0 TO SQLCODE
DBPRE END-IF
DBPRE END-IF
DBPRE IF DB-OK
DBPRE CALL 'MySQL_fetch_row' USING SQLCA-RESULT (65)
DBPRE PIN-DB
DBPRE END-CALL
DBPRE IF SQLCA-RESULT (65) = NULL
DBPRE MOVE 100 TO SQLCODE
DBPRE ELSE
DBPRE MOVE 0 TO SQLCODE
DBPRE END-IF
DBPRE END-IF
If someone knows how to make this work I would be very grateful
Hi Alvaro
I see that you haven't had any replies yet. Did you try putting a colon in front of the host variable name - i.e. :CARD-NUMBER ?
Best of luck
Chris