SQL Programming Manual for Pascal
Examples of Dynamic NonStop SQL Programs
HP NonStop SQL Programming Manual for Pascal—528614-001
C-3
Simple Dynamic SQL Program
Code for the simple dynamic SQL program follows.
Tandem Pascal (T9256C30 01DEC90)
COPYRIGHT TANDEM COMPUTERS INCORPORATED 1986,1987,1988,1989
1 0 { This program finds the average salary for employees }
2 0 { according to criteria established by the user. The }
3 0 { program contains a SELECT statement for the EMPLOYEE }
4 0 { table; the user enters the selection criteria, which }
5 0 { the program concatenates to the SELECT statement as a }
6 0 { WHERE clause. }
7 0 { }
8 0 ?LIST,NOMAP,XMEM
9 0 ?SQL
10 0 ?SYMBOLS
11 0 PROGRAM FINDAVG (INPUT,OUTPUT);
12 0
13 0 { Copy in external declarations for SQLCADISPLAY procedure }
14 0 { to handle error message display, and SQLDT data type }
15 0 { literals. SQLCADISPLAY requires copying in the TYPES }
16 0 { definitions. }
17 0
18 0 IMPORT BEGIN
19 0 ?SOURCE $SYSTEM.SYSTEM.PEXTDECS(TYPES, SQLCADISPLAY,
SQLDT),NOLIST
20 0 END;
21 0
22 0 CONST
23 0 MAXCMD = 1000;
24 0
25 0 TYPE
26 0 CMDSTR = STRING[MAXCMD];
27 0 SHORTSTR = STRING[8];
28 0
29 0 VAR SQLCODE : INT16; { for error checking }
30 0 AVERAGE : INT32; { for output value }
31 0 CMD : CMDSTR; { for SQL statement user enters }
32 0
33 0 EXEC SQL INCLUDE SQLCA;
1 0 TYPE
2 0 SQLCA_TYPE = RECORD
3 1 filler : ARRAY [1..430] OF BYTE;
4 1 END;
5 0
6 0 VAR
7 0 sqlca : SQLCA_TYPE;
34 0 EXEC SQL INCLUDE SQLSA;
1 0 TYPE
2 0 STATS_TYPE = RECORD
3 1 table_name : FSTRING(24);
4 1 records_accessed : LONGINT;
5 1 records_used : LONGINT;
6 1 disc_reads : LONGINT;
7 1 messages : LONGINT;
8 1 message_bytes : LONGINT;
9 1 waits : INTEGER;
10 1 escalations : INTEGER;
11 1 sqlsa_reserved : FSTRING(4);
12 1 END;
13 0
14 0 DML_TYPE = RECORD
15 1 num_tables : INTEGER;
16 1 stats : ARRAY [1..16] OF STATS_TYPE;
17 1 END;
18 0