Example of a PREPARE statement in an SPL routine

The HCL OneDB™ SPL language supports single-statement prepared objects.

For example, the following SQL and SPL statements perform these tasks:
  1. Create the cities table.
  2. Populates the cities table with four rows of data.
  3. Creates the order_city SPL routine that defines a prepared statement and a cursor to query the cities table:
CREATE TABLE cities    -- defines a table
(
  id INT,
  city_name CHAR(50)
);

INSERT INTO cities VALUES (1, 'Chicago');
INSERT INTO cities VALUES (2, 'New York');
INSERT INTO cities VALUES (3, 'San Francisco');
INSERT INTO cities VALUES (4, 'Atlanta');

UPDATE STATISTICS HIGH;

CREATE PROCEDURE order_city() -- defines a UDR
RETURNING INT, CHAR(50);
DEFINE c_num INT;
DEFINE c_name CHAR(50);
DEFINE c_query VARCHAR(250);
LET c_query = 
 "SELECT id, city_name FROM cities ORDER BY city_name;";

PREPARE c_stmt FROM c_query;
DECLARE c_cur CURSOR FOR c_stmt;

OPEN c_cur ;
while (1 = 1)
  FETCH c_cur INTO c_num, c_name;
  IF (SQLCODE != 100) THEN
    RETURN c_num, c_name WITH RESUME;
  ELSE
    EXIT;
  END IF
END WHILE

CLOSE c_cur;
FREE c_cur;
FREE c_stmt;

END PROCEDURE;

The following SQL statement invokes the order_city routine:

EXECUTE PROCEDURE order_city();

If the order_city function is called from the dbaccess utility, this output is displayed:

(expression) (expression)

          4 Atlanta
          1 Chicago
          2 New York
          3 San Francisco