SQL Programming Manual for Pascal
Examples of Static NonStop SQL Programs
HP NonStop SQL Programming Manual for Pascal—528614-001
B-12
Date-Time Program
 137 2  EXEC SQL
 138 2  INSERT INTO =PROJECTS
 139 2  (PROJECT_NAME, START_DATE, END_DATE,
 140 2  WAIT_TIME)
 141 2  VALUES
 142 2  ( :USER_PROJECTS_REC.PROJECT_NAME,
 143 2  :USER_PROJECTS_REC.START_DATE
 144 2   TYPE AS DATETIME YEAR TO MINUTE,
 145 2  :USER_PROJECTS_REC.END_DATE
 146 2   TYPE AS DATETIME YEAR TO MINUTE,
 147 2  :USER_PROJECTS_REC.WAIT_TIME
 148 2   TYPE AS INTERVAL DAY(2) );
 149 2
 150 2  IF SQLCODE = 0 THEN
 151 3  BEGIN
 152 4  WRITELN;
 153 4  WRITELN ('RECORD INSERTED.');
 154 4  EXEC SQL COMMIT WORK;
 155 4  END;
 156 2
 157 2
 158 2  END; { insert_project }
 159 0
 160 0
 161 0  PROCEDURE ADD_WAIT_TIME;
 162 1  {         }
 163 1  {"Wait time" is assumed to express a delay in starting the }
 164 1  { project. The report function will add the wait time to the
           }
 165 1  { start and end dates and report the new dates. Here, we }
 166 1  { simply update the wait time column in the database. The }
 167 1  { database always stores the original dates.   }
 168 1
 169 1  BEGIN
 170 2  EXEC SQL BEGIN WORK;
 171 2  WRITELN;
 172 2  WRITELN('Enter a project name of up to 10 characters:');
 173 2  READLN (USER_PROJECTS_REC.PROJECT_NAME);
 174 2  WRITELN ('Enter number of days of wait time to add:');
 175 2  READLN (USER_PROJECTS_REC.WAIT_TIME);
 176 2
 177 2 EXEC SQL
 178 2  UPDATE =PROJECTS
 179 2  SET WAIT_TIME = WAIT_TIME
 180 2  + :USER_PROJECTS_REC.WAIT_TIME TYPE AS INTERVAL DAY(2)
 181 2  WHERE PROJECT_NAME = :USER_PROJECTS_REC.PROJECT_NAME;
 182 2
 183 2  IF SQLCODE = 0 THEN
 184 3  BEGIN
 185 4  WRITELN;
 186 4  WRITELN ('WAIT TIME ADDED.');
 187 4  EXEC SQL COMMIT WORK;
 188 4  END;
 189 2
 190 2  END; { add_wait_time }
 191 0
 192 0 { Disable WHENEVER NOT FOUND checking so NOT_FOUND code }
 193 0 { is not triggered at the end of the FETCH, and so }
 194 0 { the program does not stop after fetching the old }
 195 0 { records.       }
 196 0  EXEC SQL WHENEVER NOT FOUND CONTINUE;
 197 0










