SQL Programming Manual for Pascal
Examples of Static NonStop SQL Programs
HP NonStop SQL Programming Manual for Pascal—528614-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










