首页 > 解决方案 > 如何在memsql中使用光标变成手?

问题描述

嗨团队我们如何使用游标 memsql,我没有看到在 memesql 过程中使用游标进程的任何代码。还有其他使用游标的过程吗?

标签: singlestore

解决方案


SingleStore DB(以前称为 MemSQL)有一个函数,您可以通过调用和迭代结果数组中的值COLLECT来实现只读游标功能。COLLECT该数组可以向前、向后或以任意顺序处理。

我们的官方文档中有几个示例 SQL 查询的用例。我已将下面的第一个作为参考:

示例 1:将 COLLECT 与静态查询一起使用

在以下示例中,COLLECT使用了一个查询类型变量,其定义SELECT * from t是静态的。

DROP DATABASE IF EXISTS memsql_docs_example;
CREATE DATABASE memsql_docs_example;
USE memsql_docs_example;
CREATE TABLE t(id INT, name TEXT);
CREATE TABLE output_log(msg TEXT);

INSERT INTO t VALUES (1, 'red'), (2, 'green'), (3, 'blue');

DELIMITER //

CREATE OR REPLACE PROCEDURE p() AS
DECLARE  
  qry QUERY(id INT, name TEXT) = SELECT id, name FROM t;
  arr ARRAY(RECORD(id INT, name TEXT));
  _id INT;
  _name TEXT;
BEGIN
  arr = COLLECT(qry);
  FOR x in arr LOOP
    _id = x.id;
    _name = x.name;
    INSERT INTO output_log VALUES(CONCAT('[', _id, ', ', _name, ']'));
  END LOOP;
END //

DELIMITER ;

CALL p();

SELECT * FROM output_log ORDER BY msg;

干杯!

David,教育交付专家 @ SingleStore DB(以前称为 MemSQL)


推荐阅读