SQL Programming Manual for TAL

Examples of Dynamic NonStop SQL Programs
HP NonStop SQL Programming Manual for TAL527887-001
C-38
Detailed Dynamic SQL Program
1150. 000703 1 1
1151. 000703 1 1 !--------------------------------------!
1152. 000703 1 1 ! Get information on output variables. !
Page 29 [1] $VOL1.S04.TALDYN 1991-10-15 13:42:28
dyn^tal main procedure
1153. 000703 1 1 !--------------------------------------!
1154. 000703 1 1
1155. 000703 1 1 IF out^numvars > 0 THEN
1156. 000706 1 1 BEGIN
1157. 000706 1 2 EXEC SQL DESCRIBE s1 INTO :sda^o NAMES INTO
:cname^o.val;
1158. 001000 1 2
1159. 001000 1 2 !*******************************************************!
1160. 001000 1 2 ! Allocate output data buffers and update output SQLDA. !
1161. 001000 1 2 ! Initialize SQLDA var^ptr to point to output data buffers!
1162. 001000 1 2 !*******************************************************!
1163. 001000 1 2
1164. 001000 1 2 if setupvarbuffers(sda^o) then
1165. 001004 1 2 begin
1166. 001004 1 3 rollback^flag := 1;
1167. 001006 1 3 PUT^STR("Output buffers ");
1168. 001024 1 3 call memory^error^handler(rollback^flag);
1169. 001027 1 3 goto enter^input;
1170. 001030 1 3 end;
1171. 001030 1 2 END;
1172. 001030 1 1
1173. 001030 1 1 if out^numvars > 0 then
1174. 001033 1 1 begin
1175. 001033 1 2 !*****************************************************!
1176. 001033 1 2 ! SELECT statement !
1177. 001033 1 2 !*****************************************************!
1178. 001033 1 2
1179. 001033 1 2 !------------------------------------------------------
1180. 001033 1 2 ! Define a cursor name for the statement S1, to be
1181. 001033 1 2 ! used later in OPEN, FETCH, and CLOSE statements.
1182. 001033 1 2 !------------------------------------------------------
1183. 001033 1 2
1184. 001033 1 2 EXEC SQL DECLARE c1 CURSOR FOR s1;
1185. 001033 1 2
1186. 001033 1 2 !------------------------------------------------------
1187. 001033 1 2 ! Open the cursor. By this point, all input
1188. 001033 1 2 ! parameters must have valid values.
1189. 001033 1 2 !------------------------------------------------------
1190. 001033 1 2 IF in^numvars > 0 THEN
1191. 001036 1 2 EXEC SQL OPEN c1 USING DESCRIPTOR :sda^i
1192. 001036 1 2 ELSE
1193. 001122 1 2 EXEC SQL OPEN c1;
1194. 001201 1 2
1195. 001201 1 2 !*****************************************************!
1196. 001201 1 2 ! FETCH loop !
1197. 001201 1 2 !*****************************************************!
1198. 001201 1 2
1199. 001201 1 2 sqlcode := 0;
1200. 001203 1 2 num^fetches := 0D;