簡體   English   中英

Oracle SQL Developer中的Java字符串參數

[英]Java String parameter in Oracle sql developer

我必須在Oracle SQL Developer中使用一些Java函數。 但是我在使用java String參數時遇到了一些麻煩。 我知道我的代碼對此字符串不執行任何操作。 這將是。

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "StringTest" AS
public class StringTest
{ 
    public static int test(String a)
    {
        return 1;
    }
}
/

哪個返回:

創建Java源StringTest

然后:

CREATE OR REPLACE FUNCTION F_STRING(input1 in char) return number
as LANGUAGE JAVA NAME 'StringTest.test(String) return int';

函數F_STRING編譯

現在,當我嘗試執行函數時:

SELECT F_STRING("some_text") FROM MyTable;

ORA-00904:“ some_text”:無效的標識符

  1. 00000-“%s:無效的標識符”

當我嘗試使用單引號而不是我得到這個:

ORA-29531:類StringTest 29531中沒有方法測試。00000-“類%s中沒有方法%s” *原因:試圖執行Java類中不存在的方法。 *操作:調整調用或創建指定的方法。

當我使用varchar2而不是char時, 也會發生同樣的事情。 我肯定我錯過了一些非常簡單的東西,但是卻找不到幾個小時的解決方案,這已經讓我發瘋了。

在oracle中發布Java方法時,必須使用完整的類名。 (規范名稱)。

int可以, String不能。

改變這個

CREATE OR REPLACE FUNCTION F_STRING(input1 in char) return number
    as LANGUAGE JAVA NAME 'StringTest.test(String) return int';

為此。

CREATE OR REPLACE FUNCTION F_STRING(java.lang.String in char) return number
as LANGUAGE JAVA NAME 'StringTest.test(java.lang.String) return int';

Oracle不會容忍String而是改用java.lang.String

..也

“不要過度使用”符號,因為這會強制您對對象使用精確的大小寫調用,因為對於Java源代碼來說這不是一個大問題,可能與其他對象有關。

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED stringtest AS
public class StringTest
{
    public static int test(String a)
    {
        return 1;
    }
}


CREATE OR REPLACE FUNCTION F_STRING(input1 in char) return number
as LANGUAGE JAVA NAME 'StringTest.test(java.lang.String) return java.lang.Intiger';


SELECT F_STRING('some_text') FROM dual;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM