MonetDB 中的 WHILE 查询语法

WHILE query syntax in MonetDB

我正在为 Windows 使用最新版本的 MonetDB,并且我已经在 Windows 7.

上安装了它

大家好,我最近开始研究 MonetDB。最终目标是准备原型来演示 MonetDB 和 SQL Server 之间的查询性能差异。

我已经阅读了 MonetDB SQL 参考文档,但我不清楚应该如何准备 WHILE 查询。

创建 table 查询:

sql>CREATE TABLE TestString ( Name VARCHAR(40) NULL );

声明并设置局部变量:

sql>delcare rowcount;
sql>set rowcount=1;

虽然我试过查询:

sql>WHILE rowcount<1000000
sql>DO
sql>insert TestString Values CAST(uuid() as VARCHAR(50))
sql>set rowcount=rowcount+1
sql>END WHILE

我确实通过指定缩进在 while 查询中尝试了不同的变体 但它仍然不对。

有人可以帮助我获得正确的语法或为我指出任何有用的用户手册吗?

MonetDB 支持大多数标准 SQL-99。 WHILE 是 Microsoft Transact-SQL 的一部分,它不是标准的一部分,在 MonetDB 中也不支持。

按如下方式进行操作:

CREATE TABLE TestString ( Name String NULL );

CREATE PROCEDURE InsertTestString (nrow int)
BEGIN
    DECLARE rowcount int;
    SET rowcount = 0;
    WHILE (rowcount < nrow) DO
        INSERT INTO TestString VALUES (uuid());
        SET rowcount = rowcount + 1;
    END WHILE;
END;

CALL InsertTestString(100);

显然,WHILE 想要包裹在 PROCEDUREFUNCTION 中。今天学到了一些东西...

另一个重要说明:MonetDB 中大量的单个 INSERT 命令不是很快。建议将它们包装在事务中或使用批量加载。