как получить целочисленный столбец в целочисленный список в Informix - PullRequest
0 голосов
/ 15 июня 2019

Чтобы прочитать целочисленный столбец в список целых чисел

create function somedum()
returning int
define s LIST(INTEGER NOT NULL);
select id into s from informix.emptest;
end function

create table emptest(id int)

insert into emptest(id)values(7)

, когда я выполняю вышеуказанную функцию

Я получаю ошибку как прикрепленное изображение

1 Ответ

0 голосов
/ 16 июня 2019

Документация Informix по вставке элементов в LIST кажется мне вводящей в заблуждение, поскольку мое первое впечатление от примера ( Вставка в список ) также побудило меня использовать синтаксис SELECT INTO и получитьта же ошибка:

-9634   No cast from integer to set(integer not null)

Синтаксис SELECT INTO можно использовать для копирования / вставки всего LIST, а не элементов в LIST.

Для вставки элемента вLIST (или вообще манипулировать его элементами) нам нужно использовать интерфейс виртуальной таблицы Informix, в этом случае используя синтаксис TABLE для создания виртуальной таблицы из LIST, которая затем может быть использована для обычной вставкиОперации / select / update / delete ( Производная таблица ).

CREATE FUNCTION somedum()
RETURNING LIST( INTEGER NOT NULL ) AS alist;
DEFINE my_list LIST( INTEGER NOT NULL );

INSERT INTO TABLE( my_list ) SELECT id FROM emptest;

RETURN my_list;
END FUNCTION;

Выполняя полученную функцию:

EXECUTE FUNCTION somedum();

alist  LIST{7          }
...