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 ...
提前致谢。
DEFINE 和 EXECUTE 将按预期在 SQL*Plus
中工作。要在 SQL Developer 中执行您的整个代码或作为来自客户端的脚本,我建议您:
- 使用匿名块。
DECLARE
过程OUT parameter
的一个变量,另一个变量存储的return值]函数.
- 在
BEGIN-END
块中,调用程序。
- 并使用相同的变量来存储函数的 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;
/
这可能只是对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 ...
提前致谢。
DEFINE 和 EXECUTE 将按预期在 SQL*Plus
中工作。要在 SQL Developer 中执行您的整个代码或作为来自客户端的脚本,我建议您:
- 使用匿名块。
DECLARE
过程OUT parameter
的一个变量,另一个变量存储的return值]函数.- 在
BEGIN-END
块中,调用程序。 - 并使用相同的变量来存储函数的 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; /