这应该相对容易,但我是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)
);
并且失败了!
答案 0 :(得分:2)
您可以在预期表达式的大多数地方使用FUNCTION
或PROCEDURE
的输出。所以这应该是你所需要的:
> INSERT INTO MYTABLE(val) VALUES( MYPROC(foo,bar) );
<强>更新强>
评论中的进一步讨论已经确定该程序中有一些DML,因此上述解决方案不起作用。 (Informix不允许这样做,大概是为了避免无限循环和递归)。
你可能会有更多运气(未经测试):
INSERT INTO mytable
SELECT a.result FROM TABLE(myproc('foo','bar')) AS a(result)
但它也可能因与原件相同的原因而遭到拒绝。