SQL Programming Manual for TAL

Examples of Dynamic NonStop SQL Programs
HP NonStop SQL Programming Manual for TAL527887-001
C-14
Detailed Dynamic SQL Program
Page 3 [1] $VOL1.S04.TALDYN 1991-10-15 13:42:28
42. 001172 0 0
43. 001172 0 0 !--------------------------------
44. 001172 0 0 ! Global declarations for displaying output.
45. 001172 0 0 !--------------------------------
46. 001172 0 0
47. 001172 0 0 LITERAL buffer^size^in^bytes = 200,
48. 001172 0 0 buffer^limit = (buffer^size^in^bytes / 2) - 1;
49. 001172 0 0
50. 001172 0 0 INT .buf[0:buffer^limit]; ! print buffer (word address)
51. 001336 0 0 STRING .ext sbuf; ! print buffer (byte address)
52. 001336 0 0 STRING .ext next^buf;
53. 001336 0 0 INT term; ! file number of home terminal
54. 001336 0 0
55. 001336 0 0
56. 001336 0 0 ! Small pool of memory for dynamic allocation.
57. 001336 0 0 ! Using DEFINEPOOL/GETPOOL for individual variables in
58. 001336 0 0 ! the SQL statements can be somewhat inefficient, but not
seriously
59. 001336 0 0 ! so. It should be suitable for most users.
60. 001336 0 0 ! See the Guardian Procedure Calls Reference Manual for
limitations.
61. 001336 0 0
62. 001336 0 0
63. 001336 0 0 LITERAL POOL^SIZE^IN^BYTES = 8192d;
64. 001336 0 0 INT .pool^head[0:18];
65. 001361 0 0 INT .pool[0:POOL^SIZE^IN^BYTES/2d - 1d];
66. 011361 0 0
67. 011361 0 0
68. 011361 0 0 EXEC SQL BEGIN DECLARE SECTION;
69. 011361 0 0
70. 011361 0 0 STRUCT .host1; ! holds query to be executed
71. 011361 0 0 BEGIN
72. 011361 0 1 INT len;
73. 011361 0 1 STRING str[0:MAX^SQL^STMT^LENGTH];
74. 011361 0 1 END;
75. 011763 0 0
76. 011763 0 0 STRUCT .host2; ! save copy of query for recovery via SAME
77. 011763 0 0 BEGIN
78. 011763 0 1 INT len;
79. 011763 0 1 STRING str[0:MAX^SQL^STMT^LENGTH];
80. 011763 0 1 END;
81. 012365 0 0
82. 012365 0 0 EXEC SQL END DECLARE SECTION;
83. 012365 0 0
84. 012365 0 0 !------------------------------------------------------------
85. 012365 0 0 ! Define template of TAL types which correspond to SQL types
86. 012365 0 0 !------------------------------------------------------------
87. 012365 0 0
88. 012365 0 0 STRUCT sql^types (*);
89. 012365 0 0 BEGIN
90. 012365 0 1 STRING v^char[0:MAX^SQL^CHAR^LENGTH];
91. 012365 0 1 STRUCT v^varchar = v^char;
92. 012365 0 1 BEGIN
93. 012365 0 2 INT len;
94. 012365 0 2 STRING VAL[0:MAX^SQL^CHAR^LENGTH-2];
95. 012365 0 2 END;
96. 012365 0 1 INT v^smallint = v^char;
97. 012365 0 1 INT(32) v^int = v^char;
98. 012365 0 1 FIXED v^largeint = v^char;