Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / Databases / March 2008

Tip: Looking for answers? Try searching our database.

missing SET keyword

Thread view: 
GVR_Mike - 29 Mar 2008 22:05 GMT
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();
   }
}
GVR_Mike - 30 Mar 2008 00:41 GMT
Nevermind,  I figured it out. For some reason I had a join in there. I
wasn't using the second table but for some reason the join was
throwing off the set part. I took out the join and it works fine. Keep
on programming!!!
GArlington - 31 Mar 2008 17:20 GMT
> Nevermind,  I figured it out. For some reason I had a join in there. I
> wasn't using the second table but for some reason the join was
> throwing off the set part.
This is because the join is an implicit view, and by default they are
NOT updateable.

> I took out the join and it works fine. Keep
> on programming!!!


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.