[英]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.