SQL Programming Manual for Pascal

Examples of Static NonStop SQL Programs
HP NonStop SQL Programming Manual for Pascal528614-001
B-12
Date-Time Program
137 2 EXEC SQL
138 2 INSERT INTO =PROJECTS
139 2 (PROJECT_NAME, START_DATE, END_DATE,
140 2 WAIT_TIME)
141 2 VALUES
142 2 ( :USER_PROJECTS_REC.PROJECT_NAME,
143 2 :USER_PROJECTS_REC.START_DATE
144 2 TYPE AS DATETIME YEAR TO MINUTE,
145 2 :USER_PROJECTS_REC.END_DATE
146 2 TYPE AS DATETIME YEAR TO MINUTE,
147 2 :USER_PROJECTS_REC.WAIT_TIME
148 2 TYPE AS INTERVAL DAY(2) );
149 2
150 2 IF SQLCODE = 0 THEN
151 3 BEGIN
152 4 WRITELN;
153 4 WRITELN ('RECORD INSERTED.');
154 4 EXEC SQL COMMIT WORK;
155 4 END;
156 2
157 2
158 2 END; { insert_project }
159 0
160 0
161 0 PROCEDURE ADD_WAIT_TIME;
162 1 { }
163 1 {"Wait time" is assumed to express a delay in starting the }
164 1 { project. The report function will add the wait time to the
}
165 1 { start and end dates and report the new dates. Here, we }
166 1 { simply update the wait time column in the database. The }
167 1 { database always stores the original dates. }
168 1
169 1 BEGIN
170 2 EXEC SQL BEGIN WORK;
171 2 WRITELN;
172 2 WRITELN('Enter a project name of up to 10 characters:');
173 2 READLN (USER_PROJECTS_REC.PROJECT_NAME);
174 2 WRITELN ('Enter number of days of wait time to add:');
175 2 READLN (USER_PROJECTS_REC.WAIT_TIME);
176 2
177 2 EXEC SQL
178 2 UPDATE =PROJECTS
179 2 SET WAIT_TIME = WAIT_TIME
180 2 + :USER_PROJECTS_REC.WAIT_TIME TYPE AS INTERVAL DAY(2)
181 2 WHERE PROJECT_NAME = :USER_PROJECTS_REC.PROJECT_NAME;
182 2
183 2 IF SQLCODE = 0 THEN
184 3 BEGIN
185 4 WRITELN;
186 4 WRITELN ('WAIT TIME ADDED.');
187 4 EXEC SQL COMMIT WORK;
188 4 END;
189 2
190 2 END; { add_wait_time }
191 0
192 0 { Disable WHENEVER NOT FOUND checking so NOT_FOUND code }
193 0 { is not triggered at the end of the FETCH, and so }
194 0 { the program does not stop after fetching the old }
195 0 { records. }
196 0 EXEC SQL WHENEVER NOT FOUND CONTINUE;
197 0