注册

创建外部java函数提示编译错误

default 2022/03/25 1119 2

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: DM Database Server 64 V8
【操作系统】:linux
【CPU】:
【问题描述】*:创建外部java函数,提示
“警告:创建的对象带有编译错误”。
创建语句为:

CREATE OR REPLACE FUNCTION "BASE_MANAGEMENT"."sm4e"(input VARCHAR,keys VARCHAR) RETURN VARBINARY EXTERNAL '/home/dmdba/dmdbms/bin/external_jar/oracle-encrypt-java-1.0.1.jar' "com.wt.SM4Alg2.encryptContext" USING JAVA;

错误提示:

[执行语句1]:
CREATE OR REPLACE FUNCTION "BASE_MANAGEMENT"."sm4e"(input VARCHAR,keys VARCHAR)
RETURN VARBINARY
EXTERNAL '/home/dmdba/dmdbms/bin/external_jar/oracle-encrypt-java-1.0.1.jar' "com.wt.SM4Alg2.encryptContext" USING JAVA;
警告:创建的对象带有编译错误
执行成功, 执行耗时35毫秒. 执行号:19815
影响了0条记录

1条语句执行成功

执行

alter FUNCTION "BASE_MANAGEMENT"."sm4e" compile;

控制台输出

总共1个语句正依次执行...

[执行语句1]:
alter FUNCTION "BASE_MANAGEMENT"."sm4e" compile;
执行失败(语句1)
第3 行附近出现错误[-6119]:
无效的数据类型

1条语句执行失败

java函数代码部分

public static byte[] encryptContext(String input, String key) throws Exception { final byte[] result; byte[] keyBates = Util.hexStringToBytes(key); SM4 sm4Alg = new SM4(); SM4_Context sm4ctx = new SM4_Context(); sm4Alg.sm4_setkey_enc(sm4ctx, keyBates); result = sm4Alg.sm4_crypt_ecb(sm4ctx, input.getBytes()); return result; }

会不会是java函数返回值是byte[]的问题?

回答 0
暂无回答
扫一扫
联系客服