DB2存储过程。如何使用迭代变量在循环内动态创建变量名?

时间:2013-09-13 10:28:00

标签: sql stored-procedures db2

我正在尝试根据查询结果创建变量列表。我可以创建任意数量的变量,所以我希望它是动态的。但是,我无法弄清楚如何将循环迭代次数合并到变量名中。

我正在考虑这样的事情:

declare rc int default 0;
declare n_rows int;    

--The number of variables to declare below is unknown   

  select count(1) into n_row from MyTable;
  declare varname1 to varname@n_rows varchar(100);

    while rc < n_rows do    
  select varname into var@rc from (select varname, rownumber() over() as rn  from MyTable) where rn = rc;      

- 我想要解决这个问题:

select varname into var1...

select varname into var2...

select varname into var3..

结束;

1 个答案:

答案 0 :(得分:0)

一般来说,如果您发现自己必须存储未知数量的变量,则表明程序设计不正确。为什么你认为你需要将每一行存储在内存中?数据库针对集合处理进行了优化。

但是,如果你坚持按自己的方式做事,可以考虑使用数组;一个数组可以在向它添加元素时增长(直到它消耗所有应用程序内存并崩溃数据库,但这不关心你,对吗?)