Я видел еще один вопрос, касающийся передачи типов данных SET в код C #, но он не отвечал на то, что я пытался сделать.
Я пытаюсь передать тип данных LIST в SPL с помощью select. Я знаю, что в SPL СПИСОК может быть ОПРЕДЕЛЕН и установлен как таковой:
DEFINE a LIST(INTEGER NOT NULL);
LET a = LIST{(SELECT unique b from numberTable)};
Я также знаю, что список может быть отправлен в SPL, если его переменная - LIST.
execute procedure someProc(LIST{1,2,3});
Зная эти две вещи, я хочу попытаться создать СПИСОК из SELECT для переменной.
execute procedure someProc(LIST{(SELECT unique b from numberTable)});
Итак, я создал небольшой тестовый пример.
create table tab1 (a int);
insert into tab1 values (1);
insert into tab1 values (2);
insert into tab1 values (3);
create procedure retInt(c LIST(INTEGER NOT NULL))
RETURNING INTEGER;
DEFINE b INTEGER;
FOREACH SELECT * INTO b from TABLE(c)
return b with RESUME;
end FOREACH
end procedure;
-- Works
execute procedure retInt(LIST{1,2,3});
-- Doesn't work
-- returns 284: A subquery has returned not exactly one row.
execute procedure retInt(LIST{(SELECT a from tab1)});
Я также попробовал ввести тип, выбрав такой
execute procedure retInt((SELECT a from tab1)::LIST(INTEGER NOT NULL));
Излишне говорить, что возникла синтаксическая ошибка.
Возможно, я пытаюсь сделать что-то, что невозможно. Просматривая документацию IBM, я ничего не нашел, однако иногда мне кажется, что их документацию сложно использовать.
Есть предположения?
Заранее спасибо, Катон