java - 错误: ORA-00923: FROM keyword not found where expected (JDBC)

标签 java sql oracle jdbc

我是 Oracle 和 Java 新手。我试图理解为什么我的代码不起作用。每次当我执行最后一段代码时,我都会收到该错误。我一直试图理解为什么我得到它很长一段时间,但我无法解决它。这段代码中只有一条 SELECT 语句。我认为那里没有任何错误。 来自 WageK.java 的代码:

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;

任何有关我的问题的帮助将不胜感激。

最佳答案

您应该在创建字符串后将其打印出来。至少有些问题是显而易见的,例如:

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

关于java - 错误: ORA-00923: FROM keyword not found where expected (JDBC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27095713/

相关文章:

java - 仅从终端使用 j2objc 和 jre 仿真库将 java 编译为 objective-c

java - 为什么使用PrintWriter时数据无法写入文件?

sql - 为什么 Postgres 说列不存在?

oracle - 无法导入 Oracle 转储 : IMP-00033: Warning: Table not found in export file

java - 在数组列表中的某个位置设置和添加项目时的首选项

java - Activity_display_message 无法解析或不是字段

c# - 无法在选择列表中保存多个选择 - asp.net core web 应用程序 razor 页面

mysql - 我可以将多个 MySQL 行连接到一个字段中吗?

oracle - 运行运行其他脚本文件的 SQL*Plus 脚本

sql-server - MS-SQL 中的“START WITH”等效表达式