sql - 如何在 Firebird select 语句中创建从 1 到 100 的范围?

标签 sql firebird firebird2.5

如何在 Firebird select 语句中创建从 1 到 100 的范围?

我已经找到了将字符串转换为列表的方法,但它对我不起作用,因为我需要生成更大的范围 How to input an array parameter of values to Firebird Stored Procedure? .

是否可以在不创建存储过程的情况下执行此类操作?

最佳答案

除了 Gordon 的建议之外,您还可以使用可选择的存储过程来实现此目的:

create procedure generate_range(startvalue integer, endvalue integer)
    returns (outputvalue integer)
as
begin
    outputvalue = startvalue;
    suspend;

    while (outputvalue < endvalue) do
    begin
        outputvalue = outputvalue + 1;
        suspend;
    end
end

然后您可以将其用作:

select outputvalue from generate_range(1, 100);

正如 Gordon 所展示的,相对于 CTE 的好处是它允许更大的范围,因为 Firebird CTE 的递归限制为 1024。

关于sql - 如何在 Firebird select 语句中创建从 1 到 100 的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42750834/

相关文章:

sql - 在 R 中使用正则表达式删除 SQL 注释,同时保留特殊标记

php - 使 SQL 查询的第一个和最后一个结果唯一的最佳方法?

c# - 使用 Entity Framework 插入时有条件地设置 Identity 字段

php - 如何根据提交的按钮执行 php 部分

database - 一个活跃的 IB 交易贯穿单个用户应用程序的整个生命周期

java - 如何使用 JPA 调用 firebird 可选择存储过程?

sql - 如何firebird将字符串不同的行转置为列

Firebird 2.5 CHARACTER SET WIN1252 未安装

使用JOIN时不使用Firebird索引,为什么?

sql - 如何在不输入两次公式的情况下将负结果设置为零