Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何在plpgsql中从循环返回结果?_Postgresql_Loops_Plpgsql_Postgresql 9.4 - Fatal编程技术网

Postgresql 如何在plpgsql中从循环返回结果?

Postgresql 如何在plpgsql中从循环返回结果?,postgresql,loops,plpgsql,postgresql-9.4,Postgresql,Loops,Plpgsql,Postgresql 9.4,我想看到这样的结果显示日期 "2001-01-01 00:00:00+05:30" "2001-01-02 00:00:00+05:30" "2001-01-03 00:00:00+05:30" "2001-01-04 00:00:00+05:30" "2001-01-05 00:00:00+05:30" "2001-01-06 00:00:00+05:30" "2001-01-07 00:00:00+05:30" 等等。。。 但是我犯了一个错误 ERROR: query ha

我想看到这样的结果显示日期

 "2001-01-01 00:00:00+05:30"
 "2001-01-02 00:00:00+05:30"
 "2001-01-03 00:00:00+05:30"
 "2001-01-04 00:00:00+05:30"
 "2001-01-05 00:00:00+05:30"
 "2001-01-06 00:00:00+05:30"
 "2001-01-07 00:00:00+05:30"
等等。。。 但是我犯了一个错误

ERROR:  query has no destination for result data
HINT:  If you want to discard the results of a SELECT, use PERFORM      instead.
CONTEXT:  PL/pgSQL function insert_date_dimension(date) line 12 at SQL statement
你能告诉我是什么问题吗

我创建的函数

create or replace function insert_date_dimension("Date" date)
returns text as
$$
Declare dat date;
start_date date;
end_date date;
Begin
start_date:='2016/01/01';
end_date:='2016/12/31';
while start_date<=end_date 
loop
select start_date;
start_date:=start_date+ interval  '1 day';
End loop;
return start_date;
end;
$$
LANGUAGE 'plpgsql';

不需要用户定义的函数。只需使用
generate_series

select generate_series('2016/01/01'::date, '2016/12/31', '1 day');
但是,如果您只是在摆弄,那么
返回next
a
设置日期

create or replace function insert_date_dimension("date" date)
returns setof date as $$
    declare
        dat date;
        start_date date;
        end_date date;
    begin
        start_date := '2016/01/01';
        end_date := '2016/12/31';
        while start_date <= end_date loop
            return next start_date;
            start_date := start_date + interval  '1 day';
        end loop;
    end;
$$ language plpgsql;
创建或替换函数插入日期维度(“日期”日期)
将日期集返回为$$
声明
dat日期;
开始日期;
结束日期;
开始
开始日期:=“2016/01/01”;
结束日期:=“2016/12/31”;

启动日期不需要函数和循环;您可以使用
生成_系列('2001-01-01 00:00:00','2010-01-01 00:00:00','1day::interval)
生成时间序列。错误消息非常清楚:您的
选择的结果需要存储在某个地方:您能告诉我此函数有什么问题吗?我无法执行它。错误:查询没有结果数据的目标提示:如果要放弃选择的结果,请改用“执行”。上下文:PL/pgSQL函数在SQL处插入维度(日期)第11行statement@MegharajShetty你正在运行你发布的函数,而不是我发布的函数。你的函数运行得非常好。我只是根据我的要求修改了你的查询。我想选择周、季度、,日期名称和月份名称以及日期..是否可以在“下一步返回”中选择多个列,或者在“循环中选择”时选择。。
create or replace function insert_date_dimension("date" date)
returns setof date as $$
    declare
        dat date;
        start_date date;
        end_date date;
    begin
        start_date := '2016/01/01';
        end_date := '2016/12/31';
        while start_date <= end_date loop
            return next start_date;
            start_date := start_date + interval  '1 day';
        end loop;
    end;
$$ language plpgsql;