gpt4 book ai didi

java - 在 pl/sql 中将关联数组传递给 java

转载 作者:行者123 更新时间:2023-11-30 06:13:55 24 4
gpt4 key购买 nike

我有一个带有输入参数的 Java 函数(HashMap >String, String> header, String url)

我想在 PL/SQL 中使用 Java 函数。

我读到与 PL/SQL 兼容的类型是关联数组。

但是我花了很多时间却找不到解决方案。

我创建了一个包来调用java函数,因为PL/SQL中的函数不能使用关联数组。

所以:

包装:

create or replace PACKAGE            SOLICITUDES_HTTP AS
TYPE map_varchar2 IS TABLE OF VARCHAR2(255) INDEX BY VARCHAR2(255);
Function Solicitud_Http_get (header IN map_varchar2,
url IN VARCHAR2) return VARCHAR2;
END SOLICITUDES_HTTP;

编译成功

包体:

create or replace PACKAGE BODY SOLICITUDES_HTTP AS   
Function Solicitud_Http_get (header IN map_varchar2,
url IN VARCHAR2)
RETURN VARCHAR2
IS LANGUAGE JAVA
NAME 'HTTP_Request.sendGet(java.util.HashMap,java.Lang.String) return java.lang.String';
END SOLICITUDES_HTTP;

编译失败

Error(17,30): PLS-00999: restricción de implantación (puede ser temporal) INDEX TABLE BY CHAR/VARCHAR2 parameters are disallowed

有人可以帮助我吗?

谢谢

最佳答案

您不能使用这样的 PL/SQL 关联数组 - 而是使用集合并修改您的 Java 代码以获取两个字符串数组:键之一;和值之一:

CREATE TYPE StringList IS TABLE OF VARCHAR2(255)
/

CREATE PACKAGE SOLICITUDES_HTTP AS
FUNCTION Solicitud_Http_get(
header_keys IN StringList,
header_values IN StringList,
url IN VARCHAR2
) return VARCHAR2;
END SOLICITUDES_HTTP;
/

CREATE PACKAGE BODY SOLICITUDES_HTTP AS
FUNCTION Solicitud_Http_get(
header_keys IN StringList,
header_values IN StringList,
url IN VARCHAR2
) return VARCHAR2
IS LANGUAGE JAVA
NAME 'HTTP_Request.sendGet(java.lang.String[],java.lang.String[],java.Lang.String) return java.lang.String';
END SOLICITUDES_HTTP;
/

关于java - 在 pl/sql 中将关联数组传递给 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49648081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com