繁体   English   中英

Oracle 11g 11.2.0.1:不再需要从套接字读取数据

[英]Oracle 11g 11.2.0.1 : No more data to read from socket

我试图通过查询(SQL>从double;中选择numberingmachine(“ param1”,“ param2”)来调用我的函数“ NUMBERINGMACHINE”,该查询包含:

 create or replace function NumberingMachine(numType in varchar2, now in varchar2) return varchar2 is language java name 'NumberingMachine.getSequence(java.lang.String, java.lang.String) return java.lang.String'; 

然后该函数将调用java类(NumberingMachine类)

public class NumberingMachine {


public static String getSequence(String type, String now)  throws SQLException {

    /* Connect to database */

    Connection conn = new OracleDriver().defaultConnection();
    conn.setAutoCommit(false);

    /* construct dynamic sql */

    String selectSql = "SELECT NUMVALUE,NUMLEN,UPDTYPE,UPDDATE FROM M_SEQUENCE WHERE NUMTPCD = ? FOR UPDATE";
    String updateSql = "UPDATE M_SEQUENCE SET NUMVALUE=?, UPDDATE=? WHERE NUMTPCD = ?";

但我得到错误:没有更多的数据要从套接字读取。

有人有解决方案吗?

我的oracle sql开发人员版本:

选择*从V $ VERSION

Oracle Database 11g企业版11.2.0.1.0版-生产

PL / SQL版本11.2.0.1.0-生产“ CORE 11.2.0.1.0生产”

适用于32位Windows的TNS:版本11.2.0.1.0-生产

NLSRTL版本11.2.0.1.0-生产

您发布的代码不完整,但是我认为很容易发现问题:

public static String getSequence(String type, String now)  throws SQLException {

    /* Connect to database */

    Connection conn = new OracleDriver().defaultConnection();
    conn.setAutoCommit(false);

您试图在SQL调用中将其作为Java存储过程执行。 为此,您必须已经连接到数据库 您无需再次连接。

您的所有代码所要做的就是执行实际的业务逻辑。 尽管着眼于入门,但我认为应该以PL / SQL而不是Java来完成。 PL / SQL是在数据库中编排SQL语句的最佳语言。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM