*********************************************************************** ** Licensed Materials - Property of IBM ** ** Governed under the terms of the International ** License Agreement for Non-Warranted Sample Code. ** ** (C) COPYRIGHT International Business Machines Corp. 1995 - 2002 ** All Rights Reserved. ** ** US Government Users Restricted Rights - Use, duplication or ** disclosure restricted by GSA ADP Schedule Contract with IBM Corp. *********************************************************************** ** ** SOURCE FILE NAME: varinp.sqb ** ** SAMPLE: How to update table data using parameter markers ** ** This sample program demonstrates the use of a CURSOR. ** The CURSOR is processed using dynamic SQL. This program ** obtains all managers in the STAFF tables of the SAMPLE ** database and changes their job from "Mgr" to "Clerk" ** using parameter markers. A ROLLBACK is done so that the ** SAMPLE database remains unchanged. ** ** SQL STATEMENTS USED: ** BEGIN DECLARE SECTION ** END DECLARE SECTION ** ROLLBACK ** EXECUTE ** CONNECT ** PREPARE ** DECLARE ** CLOSE ** FETCH ** OPEN ** ** OUTPUT FILE: varinp.out (available in the online documentation) *********************************************************************** ** ** For more information on the sample programs, see the README file. ** ** For information on developing COBOL applications, see the ** Application Development Guide. ** ** For information on using SQL statements, see the SQL Reference. ** ** For the latest information on programming, compiling, and running ** DB2 applications, visit the DB2 application development website: ** http://www.software.ibm.com/data/db2/udb/ad ***********************************************************************
ProcedureDivision.
Main Section. display"Sample COBOL program: VARINP".
* Get database connection information. display"Enter your user id (default none): " withnoadvancing. accept userid.
if userid = spaces EXECSQL CONNECT TO sample END-EXEC else display"Enter your password : "withnoadvancing accept passwd-name.
* Passwords in a CONNECT statement must be entered in a VARCHAR format * with the length of the input string. inspect passwd-name tallying passwd-length for characters beforeinitial" ".
EXECSQL CONNECT TO sample USER :userid USING :passwd END-EXEC. move"CONNECT TO"to errloc. call"checkerr"using SQLCA errloc.
move"SELECT name, dept FROM staff
- " WHERE job = ? FOR UPDATE OF job"to st. EXECSQL PREPARE s1 FROM :st END-EXEC. move"PREPARE"to errloc. call"checkerr"using SQLCA errloc.
EXECSQL DECLARE c1 CURSOR FOR s1 END-EXEC.
move"Mgr"to parm-var.
EXECSQLOPEN c1 USING :parm-var END-EXEC move"OPEN"to errloc. call"checkerr"using SQLCA errloc.
move"Clerk"to parm-var. move"UPDATE staff SET job = ? WHERE CURRENT OF c1"to st.
Fetch-Loop Section. EXECSQL FETCH c1 INTO :pname, :dept END-EXEC. if SQLCODE notequal 0 goto End-Fetch-Loop. display pname, " in dept. ", dept, " will be demoted to Clerk".
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.