GBase 8s 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