****************************************************************** ** 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 Cor ****************************************************************** ** ** SOURCE FILE NAME: tabsql.sqb ** ** SAMPLE: Demonstrates common table expressions using SQL ** ** This program demonstrates how to use common table ** expressions using the following advanced SQL statements ** ** WITH ** PAYLEVEL AS (SELECT EMPNO, YEAR(HIREDATE) AS HIREYEAR, EDLEVE ** SALARY+BONUS+COMM AS TOTAL_PAY FROM EMPLOYEE ** WHERE EDLEVEL > 16), ** PAYBYED (EDUC_LEVEL, YEAR_OF_HIRE, AVG_TOTAL_PAY) AS ** (SELECT EDLEVEL, HIREYEAR, AVG(TOTAL_PAY) FROM PAYLEVEL ** GROUP BY EDLEVEL, HIREYEAR) ** SELECT EMPNO, EDLEVEL, YEAR_OF_HIRE, TOTAL_PAY, AVG_TOTAL_PAY ** FROM PAYLEVEL, PAYBYED ** WHERE EDLEVEL=EDUC_LEVEL ** AND HIREYEAR = YEAR_OF_HIRE ** AND TOTAL_PAY < AVG_TOTAL_PAY; ** ** The second example is described in the "Nested Table ** Expressions" section of "Using SQL - Advanced". ** SELECT EDLEVEL, HIREYEAR, AVG(TOTAL_PAY) ** FROM ( ** SELECT EMPNO, YEAR(HIREDATE) AS HIREYEAR, EDLEVEL, ** SALARY+BONUS+COMM AS TOTAL_PAY FROM EMPLOYEE ** WHERE EDLEVEL > 16 ** ) AS PAY_LEVEL ** GROUP BY EDLEVEL, HIREYEAR ** ** SQL STATEMENTS USED: ** BEGIN DECLARE SECTION ** END DECLARE SECTION ** CONNECT ** DECLARE ** FETCH ** OPEN ** ** OUTPUT FILE: tabsql.out (available in the online documentation) ****************************************************************** ** ** For more information on the sample programs, see the README fil ** ** 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 runni ** DB2 applications, visit the DB2 application development website ** http://www.software.ibm.com/data/db2/udb/ad ******************************************************************
ProcedureDivision.
Main Section. display"Sample COBOL program: TABSQL". display" ".
* 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 fo * with the length of the input string. inspect passwd-name tallying passwd-length for characters beforeinitial" ".
display" ".
EXECSQL CONNECT TO sample USER :userid USING :passwd END-EXEC. move"CONNECT TO"to errloc. call"checkerr"using SQLCA errloc.
* COMMON TABLE EXPRESSION EXAMPLE display"COMMON TABLE EXPRESSIONS EXAMPLE". display"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^".
EXECSQL DECLARE c1 CURSOR FOR WITH
PAYLEVEL AS (SELECT EMPNO, YEAR(HIREDATE) AS
HIREYEAR, EDLEVEL, (SALARY+BONUS+COMM) AS
TOTAL_PAY FROM EMPLOYEE
WHERE EDLEVEL > 6),
PAYBYED (EDUC_LEVEL, YEAR_OF_HIRE, AVG_TOTAL_PAY)
AS (SELECT EDLEVEL, HIREYEAR, AVG(TOTAL_PAY) FROM PAYLEVEL GROUP BY EDLEVEL, HIREYEAR) SELECT EMPNO, EDLEVEL, YEAR_OF_HIRE, TOTAL_PAY,
AVG_TOTAL_PAY FROM PAYLEVEL, PAYBYED
WHERE EDLEVEL=EDUC_LEVEL AND HIREYEAR = YEAR_OF_HIRE AND TOTAL_PAY < AVG_TOTAL_PAY END-EXEC.
* NESTED TABLE EXPRESSIONS EXAMPLE display"NESTED TABLE EXPRESSIONS EXAMPLES". display"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^". display"QUESTION: What is the average total pay, by educatio
- "n level". display" and year of hire, for those with an educat
- "ion". display" level greater than 16?". display"ANSWER:".
EXECSQL DECLARE c2 CURSOR FOR SELECT EDLEVEL, HIREYEAR, AVG(TOTAL_PAY) AS
AVG_TOTAL_PAY FROM
(SELECT EMPNO, YEAR(HIREDATE) AS HIREYEAR,
EDLEVEL, SALARY+BONUS+COMM AS TOTAL_PAY FROM
EMPLOYEE WHERE EDLEVEL > 16)
AS PAY_LEVEL
GROUP BY EDLEVEL, HIREYEAR END-EXEC.
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 und die Messung sind noch experimentell.