SQL Programming Manual for Pascal

Examples of Static NonStop SQL Programs
HP NonStop SQL Programming Manual for Pascal528614-001
B-5
Insertion Program
145 0 PROCEDURE DO_ADD_TO_PARTS (VAR IN_DATA_REC: IN_DATA_TYPE);
146 1 BEGIN
147 2 PARTS_REC.PARTNUM := IN_DATA_REC.IN_PARTNUM;
148 2 PARTS_REC.PARTDESC := IN_DATA_REC.IN_PARTDESC;
149 2 PARTS_REC.PRICE := IN_DATA_REC.IN_PRICE;
150 2 PARTS_REC.QTY_AVAILABLE := IN_DATA_REC.IN_QTY;
151 2
152 2 WRITELN('BEGIN INSERT ON PARTS ********');
153 2
154 2 EXEC SQL
155 2 INSERT INTO =PARTS
156 2 VALUES ( :PARTS_REC.PARTNUM,
157 2 :PARTS_REC.PARTDESC,
158 2 SETSCALE ( :PARTS_REC.PRICE , 2 ),
159 2 :PARTS_REC.QTY_AVAILABLE);
160 2
161 2 { SETSCALE represents the value in PARTS_REC.PRICE to SQL }
162 2 { with a scale of 2 }
163 2 END; {* DO_ADD_TO_PARTS *}
164 0
165 0
166 0 PROCEDURE CLOSE_CURSOR;
167 1 BEGIN
168 2 EXEC SQL CLOSE GET_SUPPLIER_CURSOR;
169 2 END; {* CLOSE_CURSOR *}
170 0
171 0
172 0 PROCEDURE COMMIT_TRANSACTION;
173 1 BEGIN
174 2 EXEC SQL COMMIT WORK;
175 2 WRITELN('COMMIT TRANSACTION');
176 2 END; {* COMMIT_TRANSACTION *}
177 0
178 0
179 0 {* SQL error handling routines. *}
180 0
181 0 PROCEDURE NOT_FOUND;
182 1 BEGIN
183 2 CLOSE_CURSOR;
184 2 WRITELN('SUPPLIER NOT FOUND: SUPPNUM IS',
SUPPLIER_OF_PARTS);
185 2 ABORT_TRANSACTION;
186 2 END; {* NOT_FOUND *}
187 0
188 0
189 0 PROCEDURE SQLERROR;
190 1 BEGIN
191 2 SQLCADISPLAY (XADDR(SQLCA));
192 2 ABORT_TRANSACTION;
193 2 ABENDPROGRAM;
194 2 END; {* SQLERROR *}
195 0
196 0
197 0 PROCEDURE ABORT_TRANSACTION;
198 1 BEGIN
199 2 EXEC SQL ROLLBACK WORK;
200 2 WRITELN('TRANSACTION ABORTED');
201 2 EXITPROGRAM;
202 2 END; {* ABORT_TRANSACTION *}
203 0
204 0
205 0 PROCEDURE SUCCESSFUL_COMPLETION;
206 1 BEGIN
207 2 WRITELN('PART ADDED. PROGRAM ENDS.');
208 2 END; {* SUCCESSFUL_COMPLETION *}
209 0