如何 return 将来自 Informix 数据库中过程的数据制成表格
How to return tabled data from an procedure in an Informix database
我正在尝试从一个过程中 return 来自现有 table (table1) 的多行数据。
我正在使用 RazorSQL 和 Informix 12.x。
对于 MSSQL,这很简单,但对于 Informix,我似乎无法做到正确。
drop function if exists test_multi;
create FUNCTION test_multi()
RETURNING MULTISET(table1 NOT NULL);
return select * from table1;
END FUNCTION;
EXECUTE FUNCTION test_multi();
我得到:错误:发生语法错误。
我可以使用协助。
谢谢
语法错误很可能与 RETURNING 语句有关,其中需要指定 table 的元素类型。此外,结果需要作为 MULTISET 返回。
这是一个例子:
CREATE TABLE t1(c1 int, c2 int, c3 char(8));
CREATE FUNCTION p1()
RETURNING MULTISET(ROW(c1 int, c2 int, c3 char(8)) NOT NULL);
RETURN MULTISET(select * from t1);
END FUNCTION;
以及将它与 dbaccess 一起使用的示例:
INSERT INTO t1 VALUES(1, -1, "abc");
INSERT INTO t1 VALUES(2, -2, "defg");
EXECUTE FUNCTION p1();
(expression) MULTISET{ROW(1 ,-1 ,'abc '),ROW(2 ,
-2 ,'defg ')}
我正在尝试从一个过程中 return 来自现有 table (table1) 的多行数据。
我正在使用 RazorSQL 和 Informix 12.x。 对于 MSSQL,这很简单,但对于 Informix,我似乎无法做到正确。
drop function if exists test_multi;
create FUNCTION test_multi()
RETURNING MULTISET(table1 NOT NULL);
return select * from table1;
END FUNCTION;
EXECUTE FUNCTION test_multi();
我得到:错误:发生语法错误。 我可以使用协助。 谢谢
语法错误很可能与 RETURNING 语句有关,其中需要指定 table 的元素类型。此外,结果需要作为 MULTISET 返回。
这是一个例子:
CREATE TABLE t1(c1 int, c2 int, c3 char(8));
CREATE FUNCTION p1()
RETURNING MULTISET(ROW(c1 int, c2 int, c3 char(8)) NOT NULL);
RETURN MULTISET(select * from t1);
END FUNCTION;
以及将它与 dbaccess 一起使用的示例:
INSERT INTO t1 VALUES(1, -1, "abc");
INSERT INTO t1 VALUES(2, -2, "defg");
EXECUTE FUNCTION p1();
(expression) MULTISET{ROW(1 ,-1 ,'abc '),ROW(2 ,
-2 ,'defg ')}