2014-11-23 28 views
0

我是oracle和java的新手。我試圖理解爲什麼我的代碼不工作。每當我執行最後一段代碼時,我都會得到這個錯誤。我一直在試圖理解爲什麼我得到它很長一段時間,但我無法解決它。這段代碼中只有一條SELECT語句。我認爲那裏沒有任何錯誤。從WageK.java 代碼:錯誤:ORA-00923:未找到FROM關鍵字(JDBC)

import java.sql.*; 

public class wage 
{ 
public static void getWage 
(int wage_id, java.lang.String[] w_name, java.lang.String[] w_lname, 
int[] w_wage, int[] w_month, int[] wage_calc) 
throws SQLException 
{ 
try 
{ 
    Connection conn = DriverManager.getConnection("jdbc:default:connection:"); 
    PreparedStatement pstmt = null; 
    ResultSet rs = null; 

    String sql = "Select name, last_name, wage, 
    n_month, Value(A).wage_calc() as your_wage" +"From wage_java A" + 
    "Where A.ID = ?"; 

    pstmt = conn.prepareStatement(sql); 
    pstmt.setInt(1, wage_id); 
    rs = pstmt.executeQuery(); 

    if (rs.next()) 
    { 
    w_name[0] = rs.getString("name"); 
    w_lname[0] = rs.getString("last_name"); 
    w_wage[0] = rs.getInt("wage"); 
    w_month[0] = rs.getInt("n_month"); 
    wage_calc[0] = rs.getInt("wage_calc"); 
    } 
    else 
    { 
    w_name[0] = "0"; 
    w_lname[0] = "0"; 
    w_wage[0] = 0; 
    w_month[0] = 0; 
    wage_calc[0] = 0;  
    } 
    } 
    catch (SQLException e) {System.err.println(e.getMessage());} 
} 
} 

當時我發佈使用此代碼的PL/SQL包裝。

Create or replace procedure getWage (wage_id IN NUMBER, w_name OUT VARCHAR2, 
w_lname OUT VARCHAR2, w_wage OUT NUMBER, w_month OUT NUMBER, 
wage_calc OUT NUMBER) AS language Java name 'WageK.getWage 
(int, java.lang.String[],java.lang.String[],int[], int[], int[])'; 

但是當我嘗試使用此代碼來訪問它,它給我的錯誤:

set serveroutput ON; 
call DBMS_JAVA.SET_OUTPUT(2000); 

declare 
    w_name VARCHAR2(20); 
    w_lname VARCHAR2(20); 
    w_wage Number; 
    w_month Number; 
    wage_calc Number; 

BEGIN 
    getWage(1, w_name, w_lname, w_wage, w_month, wage_calc); 
    dbms_output.Put_line('Wages of employee's:'); 
    dbms_output.Put_line(' ' || wage_calc); 
end; 

任何關於我的問題的幫助將不勝感激。

回答

1

創建後應該打印出字符串。至少有一些問題是顯而易見的,比如:

Select name, last_name, wage, 
    n_month, Value(A).wage_calc() as your_wageFrom wage_java AWhere A.ID = ?; 

換句話說,你需要空間的字符串中,這樣的事情:

String sql = "Select name, last_name, wage, n_month, Value(A).wage_calc() as your_wage " + 
      "From wage_java A " + 
      "Where A.ID = ?"; 
+0

事實上,這有助於擺脫那錯誤,但現在我有一個新的 - 「無效的列名稱」。我也修復了這行代碼:dbms_output.Put_line('員工工資:');你知道我的錯誤在哪裏嗎? @Gordon – 2014-11-24 03:38:01

+0

這裏是輸出:http://i.imgur.com/jQQYLq2.png – 2014-11-24 03:43:48

相關問題