[英]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.