簡體   English   中英

帶有Blob的Oracle中Java函數中的ORA-06553錯誤參數

[英]ORA-06553 wrong arguments with java function in Oracle with Blob

我正在嘗試在Oracle 11g中實現一個函數,該函數調用Java類來解密Blob圖像信息。

一切似乎都有效,但是我得到了ORA-06553 PLS-306“參數數量或類型錯誤”

該函數接受一個blob並返回一個blob,因此我看不到錯誤來自何處。

PL / SQL功能:

create or replace
function decrypt_image return blob as
language JAVA name 'Imageutil.decryptBlobImage (java.sqlBlob) return java.sqlBlob';

Java函數:

public class Imageutil
public static java.sql.Blob decryptBlobImage (java.sql.Blob img) throws Exception {
    try {
        int len = (int)img.length();
        byte[] imagearray = img.getBytes(1, len);
        byte[] decrypted = Encryptor.decryptBinary(imagearray);
        Blob retval = new SerialBlob(decrypted);
        return retval;
    } catch (SQLException ex) {
        ex.printStackTrace();
        throw new Exception("Error handling blob",ex);
    }
}
}

數據在表中:

temp_image(id number, image blob, decrypted blob);

我在嘗試着

update temp_image set decrypted = decrypt_image(image);

當我得到錯誤。 每次都會生成一個Oracle trc文件,但是似乎沒有錯誤:

========= Dump for error ORA 1110 (no incident) ========
----- DDE Action: 'DB_STRUCTURE_INTEGRITY_CHECK' (Async) -----

(然后對數據庫進行完整性檢查)。

該功能有效,原始數據是很長的原始數據,我可以對數據進行十六進制轉儲並對其進行解密。 測試表由to_lob()函數加載到原始的長原始數據上。

您似乎在PL / SQL聲明中使用java.sqlBlob而不是java.sql.Blob 但您也不會在該聲明中為函數提供參數:

create or replace
function decrypt_image (original_blob blob) return blob as
language JAVA name 'Imageutil.decryptBlobImage (java.sql.Blob) return java.sql.Blob';

Woth您的版本的PL / SQL函數不帶任何參數,所以當你把它作為decrypt_image(image) 傳遞了錯誤的參數個數-它期待沒有,但你傳一個。

暫無
暫無

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

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