繁体   English   中英

如何在DB2上的存储过程中处理数组?

[英]How to handle an array in a stored procedure on DB2?

我正在开发一个在DB2中存储数据的应用程序,我应该能够在数据库的表中批量“删除”数据。 实际上,“删除”数据的方法是将其“删除”值更改为“Y”。

表的形式是:

id | 名字| 删除|

1 | name1 | N |

2 | name2 | N |

...

x | namex | N |

我想要做的是创建一个SQL存储过程,该过程将一个数组作为参数,其中我需要将项目的ID从“N”更改为“Y”。

我这样做(单独)是:

UPDATE MyTable DELETED = 'Y' where id = '1'; 

因此,对于存储过程,我应该只使用以下形式发送数组:

[1, 20, 5, ... , x]

并且具有这些Id的行应该更改为Y.

我正在考虑的存储过程的结构是:

PROCEDURE deleteSeveral (arrayWithIds)

LANGUAGE SQL

BEGIN

    -- loop for ids array
            UPDATE MyTable DELETED = 'Y' where id = arrayWithIds[i]; 
    -- Ciclo para recorrer el arreglo

END

有人可以帮帮我吗? 谢谢!

尝试将ID列表作为“xml-like”字符串传递:

UPDATE MyTable t
SET DELETED = 'Y'
where exists (
  select 1
  from xmltable (
    '$D/d/i' passing xmlparse(document '<d><i>1</i><i>20</i><i>5</i></d>') as "D" 
    columns
      i int path '.'
  ) p
  where p.i=t.id
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM