gpt4 book ai didi

java - 甲骨文 11g 11.2.0.1 : No more data to read from socket

转载 作者:太空宇宙 更新时间:2023-11-04 14:04:50 25 4
gpt4 key购买 nike

我试图通过查询调用我的函数“NUMBERINGMACHINE”(SQL> select numberingmachine("param1","param2")from Dual;)其中包含:

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开发者版本:

SELECT * FROM V$VERSION

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

PL/SQL 版本 11.2.0.1.0 - 生产“核心 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 语句的最佳语言。

关于java - 甲骨文 11g 11.2.0.1 : No more data to read from socket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28978009/

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