【问题标题】:DB2 Stored Procedure. How can I dynamically create a variable name inside a loop using the iteration variable?DB2 存储过程。如何使用迭代变量在循环内动态创建变量名?
【发布时间】:2013-09-13 10:28:00
【问题描述】:

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

我正在考虑这样的事情:

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..

结束;

【问题讨论】:

    标签: sql stored-procedures db2


    【解决方案1】:

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

    但是,如果您坚持按自己的方式做事,请考虑使用数组;数组可以随着您向其中添加元素而增长(直到它消耗所有应用程序内存并使数据库崩溃,但这与您无关,对吧?)

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 2012-01-05
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 2014-05-20
      • 2020-07-28
      相关资源
      最近更新 更多