【问题标题】:pass associative array to java in pl/sql在 pl/sql 中将关联数组传递给 java
【发布时间】:2018-09-13 20:13:41
【问题描述】:

我有一个带有输入参数的 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

谁能帮帮我?

谢谢

【问题讨论】:

标签: java oracle plsql


【解决方案1】:

您不能使用这样的 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.sql.array: 创建或替换 Function Solicitud_Http_get (headerKeys IN StringList, headerValues IN StringList, url IN VARCHAR2) 返回VARCHAR2 是语言 JAVA 名称 'HTTP_Request.sendGET(java.sql.Array,java.sql.Array,java.lang.String) return java.lang.String';
猜你喜欢
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 2019-03-03
相关资源
最近更新 更多