Как обработать массив в хранимой процедуре в DB2? - PullRequest
0 голосов
/ 28 мая 2019

Я разрабатываю приложение, которое хранит данные в DB2, и я должен иметь возможность массово «удалять» данные в таблице БД.На самом деле способ «удалить» данные - изменить их «удаленное» значение на «Y».

Форма таблицы:

id |имя |удалено |

1 |имя1 |N |

2 |имя2 |N |

...

x |namex |N |

Я хочу создать хранимую процедуру SQL, которая будет принимать в качестве параметра один массив с идентификаторами элементов, которые мне нужно изменить с «N» на «Y».

Способ, которым я делаю это (индивидуально):

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

Таким образом, с помощью хранимой процедуры я должен отправлять только массив с этой формой:

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

и строки с этимиИдентификатор должен быть изменен на 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

Может ли кто-нибудь помочь мне с этим?Спасибо!

1 Ответ

0 голосов
/ 30 мая 2019

Попробуйте передать список идентификаторов в виде "xml-подобной" строки:

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
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...