【发布时间】:2015-09-07 20:30:08
【问题描述】:
我有一个函数调用另一个函数并使用它的值。我已经搜索并发现(并证明)您必须这样做:
SELECT * from TABLE(FUNCTION proc1()) as tab_proc1(val1, val2);
直到那里,一切正常,但我的函数(在本例中为 proc1())具有我需要传递的值,并且由于该语句在另一个函数中,我需要将结果分配给一些值 - 例如:
select * into impo_ori, impt_ori, impo_des
from Table(procedure fc_moneda(cmon, importe, cmon_ori, cmon_des));
当我执行以下功能时:
create procedure ala(cmon integer, importe decimal, cmon_ori integer, cmon_des integer)
returning boolean;
define impo_ori, impt_ori, impo_des decimal;
define ver boolean;
select * into impo_ori, impt_ori, impo_des
from Table(procedure fc_moneda(cmon, importe, cmon_ori, cmon_des));
//continues...
return ver;
end procedure;
但将 fc_moneda 中的变量(如 cmon、importe...等)视为值而不是变量。如果我传递值,那句话就有效 喜欢:
select * into impo_ori,impt_ori,impo_des
from Table(procedure fc_moneda(1, 100, 1, 2));
任何帮助将不胜感激。
【问题讨论】:
-
我必须做一些实验。问题不在于将值传递给另一个函数——问题在于将值传递给 SELECT 语句的 TABLE 子句中使用的函数(在这种情况下)。也就是说,如果您在另一个上下文中调用另一个存储过程,或者甚至在 SELECT 语句之外调用
fc_moneda(),那么传递值不会有任何问题。我不确定(还)它在 SQL 中是怎么回事,虽然我可以做出一些猜测——但我不准备分享这些,直到我做了实验。
标签: sql stored-procedures informix