missing SET keyword
Hi all, I was wondering if you smart people could look over my code
and tell me why I'm getting a "missing SET keyword" error. Thanks very
much in advance...
Here is the error:
java.sql.SQLException: [Oracle][ODBC][Ora]ORA-00971: missing SET
keyword
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:
6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3149)
at
sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:
216)
at
sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(JdbcOdbcPreparedStatement.java:
138)
at alarmfilter.AlarmFilter.filterAlarms(AlarmFilter.java:118)
at alarmfilter.AlarmFilter.main(AlarmFilter.java:145)
Here is my code:
package alarmfilter;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class AlarmFilter {
public void filterAlarms() throws Exception {
int site = 0, notify = 0, limit = 0, hours = 0;
int sCount = 0;
String cat = "", type = "", dev = "";
String dispStat = "", dispCom = "", strDispStat = "",
strDispCom = "";
Connection conn = null;
Statement stmt = null;
PreparedStatement pstmtCount = null;
PreparedStatement pstmtUpdate = null;
ResultSet rsUnack = null;
ResultSet rsSite = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection(
"jdbc:odbc:GVR2Test", "<username>", "<password>";
stmt = conn.createStatement();
rsUnack = stmt.executeQuery(
"SELECT VRSC.ALARMS_INCOMING.ALI_SITE_ID, "
+ "VRSC.ALARMS_INCOMING.ALI_ALARM_NOTIFY_NBR, "
+ "VRSC.ALARMS_INCOMING.ALI_ALARM_CATEGORY, "
+ "VRSC.ALARMS_INCOMING.ALI_ALARM_TYPE, "
+ "VRSC.ALARMS_INCOMING.ALI_DEVICE_NBR, "
+ "VRSC.ALARMS_INCOMING.ALI_DISPOSITION_STATUS, "
+ "VRSC.ALARMS_INCOMING.ALI_DISPOSITION_COMMENT, "
+ "VRSC.ALARM_TYPES.ALT_FILTER_LIMIT, "
+ "VRSC.ALARM_TYPES.ALT_FILTER_HOURS "
+ "FROM VRSC.ALARMS_INCOMING INNER JOIN
VRSC.ALARM_TYPES "
+ "ON (VRSC.ALARMS_INCOMING.ALI_ALARM_CATEGORY = "
+ "VRSC.ALARM_TYPES.ALT_ALARM_CAT) AND "
+ "(VRSC.ALARMS_INCOMING.ALI_ALARM_TYPE = "
+ "VRSC.ALARM_TYPES.ALT_ALARM_TYPE) "
+ "WHERE (((VRSC.ALARMS_INCOMING.ALI_STATUS) = 1)
AND "
+ "((VRSC.ALARM_TYPES.ALT_FILTER_LIMIT) <> '0')
AND "
+ "((VRSC.ALARMS_INCOMING.ALI_MC_ID) In "
+ "('000001','000004'))) "
+ "GROUP BY VRSC.ALARMS_INCOMING.ALI_SITE_ID, "
+ "VRSC.ALARMS_INCOMING.ALI_ALARM_NOTIFY_NBR, "
+ "VRSC.ALARMS_INCOMING.ALI_ALARM_CATEGORY, "
+ "VRSC.ALARMS_INCOMING.ALI_ALARM_TYPE, "
+ "VRSC.ALARMS_INCOMING.ALI_DEVICE_NBR, "
+ "VRSC.ALARMS_INCOMING.ALI_DISPOSITION_STATUS, "
+ "VRSC.ALARMS_INCOMING.ALI_DISPOSITION_COMMENT, "
+ "VRSC.ALARM_TYPES.ALT_FILTER_LIMIT, "
+ "VRSC.ALARM_TYPES.ALT_FILTER_HOURS;");
pstmtCount = conn.prepareStatement(
"SELECT
Count(VRSC.ALARMS_INCOMING.ALI_ALARM_NOTIFY_NBR) "
+ "AS CountOfALI_ALARM_NOTIFY_NBR "
+ "FROM VRSC.ALARMS_INCOMING "
+ "WHERE (((VRSC.ALARMS_INCOMING.ALI_SITE_ID) = ?)
" //setInt 1
+ "AND ((VRSC.ALARMS_INCOMING.ALI_ALARM_CATEGORY)
= ?) " //setString 2
+ "AND ((VRSC.ALARMS_INCOMING.ALI_ALARM_TYPE) = ?)
" //setString 3
+ "AND ((VRSC.ALARMS_INCOMING.ALI_DEVICE_NBR) = ?)
" //setString 4
+ "AND ((VRSC.ALARMS_INCOMING.ALI_UNACK_DATE_TIME)
"
+ "(SYSDATE-(?/24))));"); //setInt 5
pstmtUpdate = conn.prepareStatement(
"UPDATE VRSC_ALARMS_INCOMING INNER JOIN
VRSC_ALARM_TYPES "
+ "ON (VRSC_ALARMS_INCOMING.ALI_ALARM_TYPE = "
+ "VRSC_ALARM_TYPES.ALT_ALARM_TYPE) AND "
+ "(VRSC_ALARMS_INCOMING.ALI_ALARM_CATEGORY = "
+ "VRSC_ALARM_TYPES.ALT_ALARM_CAT) "
+ "SET VRSC_ALARMS_INCOMING.ALI_USER_ID =
'MONITOR', "
+ "VRSC_ALARMS_INCOMING.ALI_DISPOSITION_STATUS
= ?, " //setString 1
+ "VRSC_ALARMS_INCOMING.ALI_CLOSE_DATE_TIME =
SYSDATE, "
+ "VRSC_ALARMS_INCOMING.ALI_DISPOSITION_COMMENT
= ?, " //setString 2
+ "VRSC_ALARMS_INCOMING.ALI_STATUS = 3, "
+ "VRSC_ALARMS_INCOMING.ALI_OPEN_DATE_TIME =
SYSDATE "
+ "WHERE
((VRSC_ALARMS_INCOMING.ALI_ALARM_NOTIFY_NBR) = ?)"); //setInt 3
while (rsUnack.next()) {
site = rsUnack.getInt("ALI_SITE_ID");
notify = rsUnack.getInt("ALI_ALARM_NOTIFY_NBR");
cat = rsUnack.getString("ALI_ALARM_CATEGORY");
type = rsUnack.getString("ALI_ALARM_TYPE");
dev = rsUnack.getString("ALI_DEVICE_NBR");
dispStat =
rsUnack.getString("ALI_DISPOSITION_STATUS");
dispCom =
rsUnack.getString("ALI_DISPOSITION_COMMENT");
limit = rsUnack.getInt("ALT_FILTER_LIMIT");
hours = rsUnack.getInt("ALT_FILTER_HOURS");
pstmtCount.setInt(1, site);
pstmtCount.setString(2, cat);
pstmtCount.setString(3, type);
pstmtCount.setString(4, dev);
pstmtCount.setInt(5, hours);
rsSite = pstmtCount.executeQuery();
rsSite.next(); //move to first (and only) record
sCount = rsSite.getInt("CountOfALI_ALARM_NOTIFY_NBR");
if (sCount < limit) {
strDispStat = dispStat
+ " - Closing per filter, does not exceed
"
+ limit
+ " alarms in " + hours + " hours.";
strDispCom = dispCom
+ " - Closing per filter, does not exceed
"
+ limit
+ " alarms in " + hours + " hours.";
pstmtUpdate.setString(1, strDispStat);
pstmtUpdate.setString(2, strDispCom);
pstmtUpdate.setInt(3, notify);
pstmtUpdate.executeUpdate();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rsUnack != null) {
rsUnack.close();
}
if (rsSite != null) {
rsSite.close();
}
if (stmt != null) {
stmt.close();
}
if (pstmtCount != null) {
pstmtCount.close();
}
if (pstmtUpdate != null) {
pstmtUpdate.close();
}
}
}
public static void main(String[] args) throws Exception {
AlarmFilter af = new AlarmFilter();
af.filterAlarms();
}
}