我正在尝试为Oracle创建Java存储过程 Example 7-2 Fibonacci Sequence
我完成了相同的过程,但在执行代码时
SQL> VARIABLE n NUMBER
SQL> VARIABLE f NUMBER
SQL> EXECUTE :n := 7;
SQL> CALL fib(:n) INTO :f;
我得到以下回复:
anonymous block completed
Error starting at line 4 in command:
CALL fib(:n) INTO :f
Error report:
SQL Error: ORA-01008: not all variables bound
01008. 00000 - "not all variables bound"
*Cause:
*Action:
有人可以帮忙吗?
答案 0 :(得分:0)
Oracle文档中存在很多编码错误(有时会遗漏,有时会出现错误)......无论如何,我认为问题在于该类是如何加载的。
尝试加载这样的类:
create or replace and compile java source named Fibonacci as
public class Fibonacci
{
public static int fib (int n)
{
if (n == 1 || n == 2)
return 1;
else
return fib(n - 1) + fib(n - 2);
}
}
确保函数包装器有效,然后重试。
CREATE OR REPLACE FUNCTION fib (n NUMBER) RETURN NUMBER
AS LANGUAGE JAVA
NAME 'Fibonacci.fib(int) return int';
我尝试时输出正确。
SQL> VARIABLE n NUMBER
SQL> VARIABLE f NUMBER
SQL> EXECUTE :n := 7;
PL/SQL procedure successfully completed
n
---------
7
SQL> CALL fib(:n) INTO :f;
Method called
n
---------
7
f
---------
13
SQL> PRINT f
f
---------
13
答案 1 :(得分:0)
我对SQL Developer产品知之甚少,上面的内容可能仅适用于SQL Plus。
尝试:
SELECT fib(7) FROM dual;