簡體   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