Oracle SQL PL/SQL: 使用函数的 return 值作为另一个函数的输入?

Oracle SQL PL/SQL: use return value of function as input for another function?

这可能只是对Oracle SQL和PL/SQL中存在的不同类型变量的误解,但是我如何使用[=20=的return值] 作为 SQL 脚本中另一个 PL/SQL 函数的输入,而无需手动将其设置为 DEFINE 变量的值?

这是代码(在 Oracle SQL 开发人员的 SQL 脚本中 运行):

-- some INSERTS/UPDATES/SELECTS ...
DEFINE in = 'somevalue';

VAR return1 NUMBER;
EXECUTE :return1 := someschema.somepackage.somefunction(in);
PRINT return1;
-- reasonable return value gets printed out

VAR return2 NUMBER;
EXECUTE :return2 := someschema.somefunction(return1);
--                                          ^
-- this does not work ----------------------+
-- (neither does ":return1")

DEFINE in2 = <manually enter value of "return1">
EXECUTE :return2 := someschema.somefunction(in2);
--                                          ^
-- this works ------------------------------+

-- some INSERTS/UPDATES/SELECTS ...

提前致谢。

DEFINEEXECUTE 将按预期在 SQL*Plus 中工作。要在 SQL Developer 中执行您的整个代码或作为来自客户端的脚本,我建议您:

  1. 使用匿名块
  2. DECLARE 过程OUT parameter的一个变量,另一个变量存储的return值]函数.
  3. BEGIN-END块中,调用程序。
  4. 并使用相同的变量来存储函数的 return 值。

例如,

DECLARE
   o_var ;
   f_var ;
BEGIN
   -- call the procedure
   package.procedure(o_var);

   --call the function
   SELECT package.function(o_var) INTO f_var FROM DUAL;

   -- do something
END;
/