SQL Programming Manual for TAL
Examples of Dynamic NonStop SQL Programs
HP NonStop SQL Programming Manual for TAL—527887-001
C-39
Detailed Dynamic SQL Program
Page 30 [1] $VOL1.S04.TALDYN 1991-10-15 13:42:28
dyn^tal main procedure
1210. 001267 1 3 begin
1211. 001267 1 4 PRINT^BLANK^LINE;
1212. 001277 1 4 PUT^STR ("--- ");
1213. 001315 1 4 PUT^DBL^MID (num^fetches);
1214. 001334 1 4 PUT^STR^MID (" row(s) selected.");
1215. 001350 1 4 PRINT^LINE;
1216. 001363 1 4 EXEC SQL CLOSE C1;
1217. 001435 1 4 EXEC SQL COMMIT WORK;
1218. 001506 1 4 goto enter^input;
1219. 001507 1 4 end;
1220. 001507 1 3
1221. 001507 1 3 ! Re-enable warning checking:
1222. 001507 1 3 EXEC SQL WHENEVER SQLWARNING CALL :sql^warning^handler;
1223. 001507 1 3
1224. 001507 1 3 CALL display^result (sda^o, cname^o); !Display one row
1225. 001513 1 3 num^fetches := num^fetches + 1D;
1226. 001517 1 3
1227. 001517 1 3 end; ! end WHILE loop
1228. 001520 1 2
1229. 001520 1 2 !*****************************************************!
1230. 001520 1 2 ! Not a SELECT statement. !
1231. 001520 1 2 ! EXECUTE the statement with USING DESCRIPTOR if there were
input !
1232. 001520 1 2 ! parameters; otherwise, EXECUTE the statement. !
1233. 001520 1 2 !*****************************************************!
1234. 001520 1 2
1235. 001520 1 2 IF in^numvars > 0 THEN
1236. 001523 1 2 EXEC SQL EXECUTE s1 USING DESCRIPTOR :sda^i
1237. 001523 1 2 ELSE
1238. 001601 1 2 EXEC SQL EXECUTE s1;
1239. 001664 1 2
1240. 001664 1 2 PRINT^BLANK^LINE;
1241. 001674 1 2 PUT^STR ("--- SQL Operation Complete.");
1242. 001715 1 2 PRINT^LINE;
1243. 001730 1 2 end;
1244. 001730 1 1
1245. 001730 1 1 EXEC SQL COMMIT WORK;
1246. 002001 1 1 goto enter^input; ! Get the next query
1247. 002002 1 1
1248. 002002 1 1
1249. 002002 1 1 sql^error^handler:
1250. 002002 1 1 !*****************************************************!
1251. 002002 1 1 ! The WHENEVER SQLERROR clause sends the program to this
code if an !
1252. 002002 1 1 ! SQL error is encountered. !
1253. 002002 1 1 !*****************************************************!
1254. 002002 1 1
1255. 002002 1 1 ! Save the value of SQLCODE. ROLLBACK WORK sets SQLCODE to
0.
1256. 002002 1 1 temp^sqlcode := sqlcode;
1257. 002004 1 1
1258. 002004 1 1 ! Disable WHENEVER checking to avoid an infinite loop if
an error
1259. 002004 1 1 ! should occur in this code. See discussion under WHENEVER
1260. 002004 1 1 ! in Section 3.
1261. 002004 1 1 EXEC SQL WHENEVER SQLERROR CONTINUE;
1262. 002004 1 1 PRINT^BLANK^LINE;
1263. 002014 1 1 call SQLCADISPLAY (sqlca);
1264. 002026 1 1 EXEC SQL ROLLBACK WORK;
1265. 002073 1 1 goto enter^input;
1266. 002104 1 1