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