如何从INFORMIX中的最后一个EXECUTE PROCEDURE插入返回值

时间:2014-11-10 14:34:42

标签: stored-procedures return-value informix

这应该相对容易,但我是informix的新手。

我有一个存储过程,我正在调用EXECUTE PROCEDURE。过程大致如下(但有更多的栏目):

CREATE PROCEDURE MYPROC (
    foo int,
    bar int
) returning int;

如何使用Informix提示中的int 在后续插入中使用它?

这大致是我想做的。我没有选择改变过程的内部。

> EXECUTE PROCEDURE MYPROC(foo,bar);

(expression)

        4104

1 row(s) retrieved.

> INSERT INTO MYTABLE(val) VALUES(I_DONT_KNOW_WHAT_GOES_HERE);

我已经尝试过这个

> INSERT INTO MYTABLE(val) VALUES(
    EXECUTE PROCEDURE MYPROC(foo,bar)
);

并且失败了!

1 个答案:

答案 0 :(得分:2)

您可以在预期表达式的大多数地方使用FUNCTIONPROCEDURE的输出。所以这应该是你所需要的:

> INSERT INTO MYTABLE(val) VALUES( MYPROC(foo,bar) );

<强>更新

评论中的进一步讨论已经确定该程序中有一些DML,因此上述解决方案不起作用。 (Informix不允许这样做,大概是为了避免无限循环和递归)。

你可能会有更多运气(未经测试):

INSERT INTO mytable 
SELECT a.result FROM TABLE(myproc('foo','bar')) AS a(result)

但它也可能因与原件相同的原因而遭到拒绝。