当前位置: 首页 > 知识库问答 >
问题:

从匿名PL/SQL中提取varchar数组时出现“ORA-03115:不支持的网络数据类型或表示”错误

庄子平
2023-03-14
    Connection con = null;
    CallableStatement cstmt = null;
    ResultSet rs = null;
    String dequeueQuery = "DECLARE " +
            " type namesarray IS VARRAY(5) OF VARCHAR2(10); " +
            " names namesarray;" +
            "   total integer;" +
            "   BEGIN " +

            "   names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz'); " +

            "   ? := names;"+

            " END;";

    try{

            con = getConnection();

            con.setAutoCommit(false);

            cstmt =(OracleCallableStatement )con.prepareCall(dequeueQuery);
            cstmt.registerOutParameter(1, OracleTypes.ARRAY);
            boolean b = cstmt.execute();
            Array arr = cstmt.getArray(1);

              String[] recievedArray = (String[]) arr.getArray();
              for (int i = 0; i < recievedArray.length; i++)

                System.out.println(recievedArray[i]);

            con.commit();

    }catch (Exception e) {
        try {
            con.rollback();
        } catch (SQLException e1) {
            e1.printStackTrace();
        }`

请帮帮我.提前谢谢你。

共有1个答案

楚嘉胜
2023-03-14

java.sql.sqlexception:ORA-03115:不支持的网络数据类型或表示

这是由以下说法造成的:

cstmt.registerOutParameter(1, OracleTypes.ARRAY);

该语句表示array将是输出,但没有将实际的Oracle类型名指定为第三个参数。有关这方面的更多信息,您可以查看此Oracle文档。

cstmt.registerOutParameter(1, OracleTypes.ARRAY,"NAMESARRAY");
connect scott/tiger
CREATE OR REPLACE TYPE namesarray AS VARRAY(5) OF VARCHAR2(10) ;
/

java.sql.sqlexception:ora-06550:第1行,第180列:

PLS-00382:表达式类型错误ORA-06550:第1行第173列:

PL/SQL:已忽略语句

String dequeueQuery = "DECLARE " +
            " type namesarray IS VARRAY(5) OF VARCHAR2(10); " +
            " names namesarray;" +
            "   total integer;" +
            "   BEGIN " +
            "   names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz'); " +
            "   ? := names;"+
            " END;";
String dequeueQuery = "DECLARE " +
            " names namesarray;" +
            "   total integer;" +
            "   BEGIN " +
            "   names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz'); " +
            "   ? := names;"+
            " END;";
Kavita
Pritam
Ayan
Rishav
Aziz
import java.io.*;
import java.sql.*;
import oracle.jdbc.*;

public class DBQC {
   public static void main(String[] args) {
   try {
      Connection con=null;
      Class.forName("oracle.jdbc.OracleDriver");
      String connStr = "jdbc:oracle:thin:scott/tiger@//dbhost:1521/dbsrvc";
      con=DriverManager.getConnection(connStr);
      if(con != null)
      {
         System.out.println("Connection succeeded");

         String dequeueQuery = "DECLARE " +
            " names namesarray;" +
            "   total integer;" +
            "   BEGIN " +
            "   names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz'); " +
            "   ? := names;"+
            " END;";

         CallableStatement cstmt = null;
         con.setAutoCommit(false);
         cstmt =(OracleCallableStatement)con.prepareCall(dequeueQuery);

         cstmt.registerOutParameter(1, OracleTypes.ARRAY,"NAMESARRAY");
         boolean b = cstmt.execute();
         Array arr = cstmt.getArray(1);

         String[] recievedArray = (String[]) arr.getArray();
         for (int i = 0; i < recievedArray.length; i++)
             System.out.println(recievedArray[i]);

         con.commit();
      }
      con.close();
    } catch(Exception e){e.printStackTrace();}
    }
}
 类似资料:
  • 问题内容: 从匿名PL / SQL块中获取类型的varray时,出现“ ORA-03115:不支持的网络数据类型或表示形式”异常。 我的代码是: 请帮我。先感谢您。 问题答案: java.sql.SQLException:ORA-03115:不支持的网络数据类型或表示形式 这是由以下语句引起的: 该语句说array将是输出,但没有将实际的Oracle Type名称指定为第三个参数。您可以检查此Or

  • 问题内容: 我正在使用Oracle 11g数据库。当我尝试从db访问数据时,它显示错误java.sql.SQLException:ORA-03115:不支持的网络数据类型或表示形式。我不明白这个错误的意思.. 我的代码是: 任何人都可以帮助我解决这个问题。 问题答案: 代替: 您应该执行: 否则,您将不 准备 您的语句并丢失所有参数,因为您为其分配了新的SQL语句(即使它是相同的)。

  • 我有一小段代码,抓取一些数据并生成SQL语句,将它们插入Oracle数据库。然后通过Oracle服务器上的JDBC驱动程序执行这些操作。 我遇到的问题是,如果这些语句包含一个TO_BINARY_DOUBLE调用,它们总是对我失败,而不是对我团队中的任何人失败,他们应该和我有完全相同的驱动程序和环境,这是非常奇怪的。 错误是: 希望有人能给我提供一些线索,或者给我指出正确的方向,试着找到它。

  • 正如您所知,由于Oracle11g不支持json,我使用CLOB创建json数据,因为varchar2(32767)大小,但此时我得到了ORA-06502:PL/SQL:numeric或value错误。同时,数据大小为68075。为什么我得到错误,尽管Clob是支持4 gb的数据?

  • 我在执行触发器时遇到以下错误: 请说明问题的原因。 编辑 数据类型:

  • 我得到了 ORA-06502:PL/SQL:以下代码中出现数值或值错误: