在 SPL 例程中的 PREPARE 语句的示例

GBase 8s SPL 语言支持单一语句的准备好的对象。

例如,下列 SQL 和 SPL 语句执行这些任务:
  1. 创建 cities 表。
  2. 以四行数据填入 cities 表。
  3. 创建定义准备好的语句和游标来查询 citiesorder_city SPL 例程:
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;

下列 SQL 语句调用 order_city 例程:

EXECUTE PROCEDURE order_city();

如果从 dbaccess 实用程序调用 order_city 函数,则显示此输出:

(expression) (expression)

          4 Atlanta
          1 Chicago
          2 New York
          3 San Francisco