**************************************************************** * * COMMENT SECTION * * DATE 1989/04/07 EMBEDDED COBOL LANGUAGE * NIST SQL VALIDATION TEST SUITE V6.0 * DISCLAIMER: * This program was written by employees of NIST to test SQL * implementations for conformance to the SQL standards. * NIST assumes no responsibility for any party's use of * this program. * * CDR020.PCO * WRITTEN BY: SUN DAJUN * TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE * * THIS ROUTINE TESTS THE REFERENTIAL INTEGRITY CONSTRAINT FOR * SQL. * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * with Integrity Enhancement * * SECTION 6.7 <referential constraint definition> * <referential constraint definition>::= * FOREIGN KEY (<referencing columns>) * <references specification> * <references specification>::= * REFERENCES <referenced table and columns> * <referencing columns>::= * <reference column list> * <refereced table and columns>::= * <table name>((<reference column list> * <reference column list>::= * <column name>({,<column name>}...) * ****************************************************************
MOVE"SUN"TO uid CALL"AUTHID"USING uid MOVE"not logged in, not"TO uidx EXECSQLSELECT
USER INTO :uidx FROM SUN.ECCO END-EXEC if (uid NOT = uidx) then DISPLAY"ERROR: User " uid " expected." DISPLAY"User " uidx " connected." DISPLAY" " STOPRUN END-IF
MOVE 0 TO errcnt DISPLAY "SQL Test Suite, V6.0, Embedded COBOL, cdr020.pco" DISPLAY" " DISPLAY "59-byte ID" DISPLAY"TEd Version #" DISPLAY" " * date_time print * ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME ******************** BEGIN TEST0369 ******************* * This test try to update PRIMARY KEY TABLE, only * temporary conflict DISPLAY" TEST0369 " DISPLAY" TEMPORARY CONFLICT " DISPLAY" SQL with Integrity Enhancement section
- " 6.3,6.4" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" INSERT INTO SIZ3_P3" DISPLAY" VALUES (0,'CC');" DISPLAY" " DISPLAY" UPDATE SIZ3_P3" DISPLAY" SET F1 = F1 + 1;" DISPLAY" " DISPLAY" SELECT MAX(F1),MIN(F1) INTO :min1,:max1 " DISPLAY"FROM SIZ3_P3;" DISPLAY" " EXECSQLINSERTINTO SIZ3_P3
VALUES (0,'CC') END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL UPDATE SIZ3_P3 SET F1 = F1 + 1 END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO code1 EXECSQLSELECT MAX(F1),MIN(F1) INTO :max1,:min1 FROM SIZ3_P3 END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY" The correct answer is :" DISPLAY" code1 is equal to 0." DISPLAY" max1 = 5, min1 = 1." DISPLAY" Your answer is :" DISPLAY" code1 is ", code1 DISPLAY" max1 = ", max1 ",min1 = ", min1 if (code1 = 0 AND max1 = 5 AND min1 = 1) then EXECSQLINSERTINTO TESTREPORT
VALUES('0369','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY" *** pass *** " else EXECSQLINSERTINTO TESTREPORT
VALUES('0369','fail','PCO') END-EXEC ADD 1 TO errcnt MOVE SQLCODE TO SQL-COD DISPLAY" cdr020.pco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ************************ END TEST0369 ************************
******************** BEGIN TEST0370 ******************* * This test try to update FOREIGN KEY TABLE, only * temporary conflict DISPLAY" TEST0370 " DISPLAY" TEMPORARY CONFLICT " DISPLAY" SQL with Integrity Enhancement section
- " 6.3,6.4" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" UPDATE SIZ2_F3" DISPLAY" SET F1 = F1 + 1;" DISPLAY" " DISPLAY" SELECT MAX(F1),MIN(F1) INTO :min1,:max1 " DISPLAY"FROM SIZ2_F3;" DISPLAY" " EXECSQL UPDATE SIZ2_F3 SET F1 = F1 + 1 END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO code1 EXECSQLSELECT MAX(F1),MIN(F1) INTO :max1,:min1 FROM SIZ2_F3 END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY" The correct answer is :" DISPLAY" code1 is equal to 0." DISPLAY" max1 is 4, min1 is 2." DISPLAY" Your answer is :" DISPLAY" code1 is ", code1 DISPLAY" max1 is ", max1 ",min1 is ", min1 if (code1 = 0 AND max1 = 4 AND min1 = 2) then EXECSQLINSERTINTO TESTREPORT
VALUES('0370','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY" *** pass *** " else EXECSQLINSERTINTO TESTREPORT
VALUES('0370','fail','PCO') END-EXEC ADD 1 TO errcnt MOVE SQLCODE TO SQL-COD DISPLAY" cdr020.pco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ************************ END TEST0370 ************************
******************** BEGIN TEST0371 ******************* * This test updates both PRIMARY KEY TABLE & FOREIGN * KEY TABLE, only temporary conflict DISPLAY" TEST0371 " DISPLAY" TEMPORARY CONFLICT " DISPLAY" SQL with Integrity Enhancement section
- " 6.3,6.4" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" INSERT INTO MID1" DISPLAY" VALUES(1,1);" DISPLAY" INSERT INTO MID1" DISPLAY" VALUES(2,1);" DISPLAY" INSERT INTO MID1" DISPLAY" VALUES(3,2);" DISPLAY" INSERT INTO MID1" DISPLAY" VALUES(4,3);" DISPLAY" INSERT INTO MID1" DISPLAY" VALUES(5,1);" DISPLAY" UPDATE MID1" DISPLAY" SET P_KEY = P_KEY + 1," DISPLAY" F_KEY = F_KEY + 1;"
EXECSQLINSERTINTO MID1
VALUES(1,1) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO MID1
VALUES(2,1) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO MID1
VALUES(3,2) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO MID1
VALUES(4,3) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQLINSERTINTO MID1
VALUES(5,1) END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL UPDATE MID1 SET P_KEY = P_KEY + 1,
F_KEY = F_KEY + 1 END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO code1 EXECSQLSELECT MAX(F_KEY),MIN(F_KEY),MAX(P_KEY),MIN(P_KEY) INTO :max1,:min1,:max2,:min2 FROM MID1 END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY" The correct answer is :" DISPLAY" code1 is equal to 0." DISPLAY" max1 is 4, min1 is 2." DISPLAY" max2 is 6, min2 is 2." DISPLAY" Your answer is :" DISPLAY" code1 is ", code1 DISPLAY" max1 is ", max1 ",min1 is ", min1 DISPLAY" max2 is ", max2 ",min2 is ", min2 if (code1 = 0 AND max1 = 4 AND min1 = 2 AND max2
= 6 AND min2 = 2) then EXECSQLINSERTINTO TESTREPORT
VALUES('0371','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY" *** pass *** " else EXECSQLINSERTINTO TESTREPORT
VALUES('0371','fail','PCO') END-EXEC ADD 1 TO errcnt MOVE SQLCODE TO SQL-COD DISPLAY" cdr020.pco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ************************ END TEST0371 ************************
******************** BEGIN TEST0372 ******************* *delete from self_reference table, temporary conflict DISPLAY" TEST0372 " DISPLAY" TEMPORARY CONFLICT " DISPLAY" SQL with Integrity Enhancement section
- " 6.3,6.4" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" DELETE FROM STAFF_C" DISPLAY" WHERE EMPNUM = 'E2' OR MGR = 'E2';" DISPLAY" " DISPLAY" SELECT COUNT(*)" DISPLAY" INTO :count1 FROM STAFF_C;" DISPLAY" " EXECSQLDELETEFROM STAFF_C
WHERE EMPNUM = 'E2'OR MGR = 'E2'END-EXEC MOVE SQLCODE TO SQL-COD MOVE SQLCODE TO code1 EXECSQLSELECTCOUNT(*) INTO :count1 FROM STAFF_C END-EXEC MOVE SQLCODE TO SQL-COD EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY" The correct answer is :" DISPLAY" code1 is equal to 0." DISPLAY" count1 is 4." DISPLAY" Your answer is :" DISPLAY" code1 is ", code1 DISPLAY" count1 is ", count1 if (code1 = 0 AND count1 = 4) then EXECSQLINSERTINTO TESTREPORT
VALUES('0372','pass','PCO') END-EXEC MOVE SQLCODE TO SQL-COD DISPLAY" *** pass *** " else EXECSQLINSERTINTO TESTREPORT
VALUES('0372','fail','PCO') END-EXEC ADD 1 TO errcnt MOVE SQLCODE TO SQL-COD DISPLAY" cdr020.pco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD ************************ END TEST0372 ************************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet)
¤
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.