[英]Calling Java Stored Procedure in Oracle
我正在嘗試按照示例7-2 Fibonacci Sequence的方式為Oracle創建Java存儲過程。
我經歷了完全相同的過程,但是在執行代碼時
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:
有人可以幫忙嗎?
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
我對SQL Developer產品了解不多,上面的內容可能僅適用於SQL Plus。
嘗試:
SELECT fib(7) FROM dual;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.