有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java错误:ORA00923:FROM关键字未在预期位置找到(JDBC)

我不熟悉oracle和java。我试图理解为什么我的代码不起作用。每次我执行最后一段代码时,都会出现错误。我一直在试图理解为什么我得到了它很长一段时间,但我无法解决它。这段代码中只有一条SELECT语句。我认为那里没有任何错误。 来自WageK的密码。爪哇:

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) 个答案

  1. # 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 = ?";