0
我一直在尝试修复我的代码很长一段时间了。我找不到我在这里失踪的东西。我尝试了很多东西。替换名称,更改SELECT语句,例如,SELECT name ... FROM wage_java A " to "SELECT a.name ... FROM wage_java A
。这似乎没有帮助我。 SQLDeveloper总是给我一个输出:http://i.imgur.com/jQQYLq2.png 希望有人能帮助我。列名无效(JDBC)
import java.sql.*;
public class WageK{
public static void getWage (int w_id, java.lang.String[] w_name,
java.lang.String[] w_lname, int[] w_wage, int[] w_mnr, int[] wages_calc)
throws SQLException {
try{
Connection conn = DriverManager.getConnection("jdbc:default:connection:");
PreparedStatement pstmt = null;
ResultSet rs = null;
java.lang.String sql = "Select a.name, a.last_name, a.wage, a.month_nr,
Value(A).wages_calc() as emp_wage " + "From wage_java A " + "Where A.ID = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, w_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_mnr[0] = rs.getInt("month_nr");
wages_calc[0] = rs.getInt("wages_calc");
} else {
w_name[0] = "0";
w_lname[0] = "0";
w_wage[0] = 0;
w_mnr[0] = 0;
wages_calc[0] = 0;
}
} catch (SQLException e) {
System.err.println(e.getMessage());
}
}
}
PL/SQL包装:
Create or replace procedure getWage (w_id IN NUMBER, nm OUT VARCHAR2,
lnm OUT VARCHAR2, wg OUT NUMBER, mnth OUT NUMBER,
wages_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
nm VARCHAR2(20);
lnm VARCHAR2(20);
wg Number;
mnth Number;
wages_calc Number;
BEGIN
getWage(1, nm, lnm, wg, mnth, wages_calc);
dbms_output.Put_line('Wage of employees:');
dbms_output.Put_line(' ' || wages_calc);
end;
谢谢。它像一个魅力。如果你想知道我为什么使用Java存储过程 - 这是一项任务。我会研究你正在谈论的标量值。无论如何,再次感谢你。 @Justin – 2014-11-24 05:44:49