如何将记录单元格值添加到数组变量(数组中的IE总和值)

时间:2017-04-06 05:55:28

标签: sql arrays postgresql

我有一个函数返回一组记录。这可以在这张图片中看到

attached picture

我有一系列长度为2.8米至4.9米(分别为28纳秒至49纳米)的电路板,它们具有设置位的特性,如 bincodes (9,2049,4097等)所示。每个给定的板长,我需要总结每个bincode的板数。 EG在这种情况下ln28(bincode 4097)= 3 + 17 + 14 = 34.如果你看到 brdsource = 128系列是我打算存储这些值的地方,那么对于行 brdsource < / strong> 128, bincodes 4097,我想在 ln28 中存储34个。

你会看到我的所有brdsource = 128的ln28值都是0。我已经生成了额外的记录作为我的setof记录的一部分,我正在尝试使用多维数组来添加值并保持跟踪其中如上所示的数组 - 摘要[boardlength 0-8] [bincode 0-4]。

问题1 - 我看到如果我向数组位置添加1(为了论证,它可以是任何数字),它返回一个空值(没有错误,表单元格中没有任何内容)。但是,如果我首先将数组位置设置为0,然后添加1,它将完美地运行。如何将定义为整数类型的数组保存为空值?

问题2 - 如何将我的相应记录(称为rc)板长度计数添加到阵列。 IE我想做这样的事情

if(rc.bincode = 4097)then Summary [0] [2]:= Summary [0] [2] + rc.ln28;

然后,在将此注入到我的表中时(在brdsource = 128阶段):

如果(rc.bincode = 4097)则rc.ln28:=摘要[0] [2];

当然,我可能会以一种完全非正统的方式对待这一点(虽然对我而言,SQL只是非常正统,叹息)。我已经尝试根据所需的条件(例如使用case(when ... end)语句)对所有先前的记录求和,但我证明了我已经怀疑的,即每个返回的记录只是一行数据。只是无法访问FOR LOOP ... END LOOP函数返回的先前记录行中的数据。

最后要注意的是,此处讨论的所有内容都在内部函数中发生。我没有尝试将记录等添加到函数返回的数据中。

我使用的是PostgreSQL 9.2.9,由Visual C ++ build 1600,64位编译。是的,我知道这是一个旧版本。

0 个答案:

没有答案