【发布时间】:2015-12-18 20:21:56
【问题描述】:
我看到另一个关于将 SET 数据类型推送到 c# 代码的问题,但它并没有真正回答我想要做什么。
我正在尝试使用选择将 LIST 数据类型传递给 SPL。我知道在 SPL 中可以定义和设置 LIST:
DEFINE a LIST(INTEGER NOT NULL);
LET a = LIST{(SELECT unique b from numberTable)};
我还知道,如果列表的变量是 LIST,则可以将列表发送到 SPL。
execute procedure someProc(LIST{1,2,3});
了解这两件事后,我想尝试从 SELECT 中为变量创建一个 LIST。
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 的文档我没有找到任何东西,但有时我觉得他们的文档可能很难使用。
有什么想法吗?
提前谢谢你, 卡顿
【问题讨论】:
标签: informix sqldatatypes spl