Menu

Need help using "WHERE" clause in dbpre

Help me
2018-01-30
2021-10-17
  • Álvaro Pérez Gómez

    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

     
  • Chris Bland-Ward

    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

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.