这可能只是对Oracle SQL和PL/SQL中存在的不同类型变量的误解,但是我怎样才能将PL/SQL函数的返回值用作SQL脚本中另一个PL/SQL函数的输入必须手动将其设置为DEFINE变量的值?Oracle SQL PL/SQL:使用函数的返回值作为另一个函数的输入?
下面是代码(被Oracle SQL Developer中内部的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 ...
感谢的提前。
使用匿名块,声明一个变量的OUT参数。并使用与IN参数相同的变量作为函数。 – 2015-03-13 13:35:15
传递':return1'是正确的,当你尝试时会发生什么? “不起作用”不是很有帮助。您尚未显示替代变量版本的&符号,因此您不能完全清楚您正在执行或正在执行的操作。使用块可能仍然更容易也更合适。 – 2015-03-13 13:44:42
你说的第一个调用是一个过程,但它显然返回像函数一样的值。第一个程序是否有OUT参数? – ruudvan 2015-03-13 13:45:08