Terminate Select when 1 dependant row is found

Hi,
I need to know that at least 1 dependant row exists for the parent.
Is is possible to terminate the Select when the 1 dependant row is found instead of counting all the dependants, and how is that done?
I'm using LEFT OUTER JOIN to determine that no dependants exist.
Thank You in Advance for Your Help,
Lou

Really there is no difference between Andreas example and my one. Andreas has given you absolutely correct answer too. No matter you write in a selection list of the correlated subquery 1 or *. Oracle just checks the existance of a row and doesn't retrieve anything. In that sense all examples below work similar:
SQL> select deptno from dept
  2  where exists (select * from emp where emp.deptno = dept.deptno)
  3  /
    DEPTNO
        20
        30
        10
SQL>
SQL> select deptno from dept
  2  where exists (select 1 from emp where emp.deptno = dept.deptno)
  3  /
    DEPTNO
        20
        30
        10
SQL>
SQL> select deptno from dept
  2  where exists (select null from emp where emp.deptno = dept.deptno)
  3  /
    DEPTNO
        20
        30
        10
SQL>
SQL> select deptno from dept
  2  where exists (select 'ABC' from emp where emp.deptno = dept.deptno)
  3  /
    DEPTNO
        20
        30
        10Rgds.

Similar Messages

  • JTable checkboxes doesn't retain their selection when a new row is added!!

    HI,
    My gui has the JTable component which has 5 columns. out of which 4 columns are checkboxes. whenever i select an item from the Jlist and click on the add button it will add a new row in JTable.
    but the problem is whenever a new row is added to the table. the previously selected checkboxes of previous rows are being deselected. But i want to retain the selection of my previous rows even when a new row is added. please help me how to achieve this..i am posting my JTable code here:
    class FunctionTableModel extends AbstractTableModel{
           /** The instances who's attribute structure we are reporting */
        //protected InitModel m_init;
        protected String func_element;
        protected int counter;
        //protected String[] func_array;
        protected Vector func_vector;
        /** The flag for whether the instance will be included */
        protected boolean [] m_Sum;
        protected boolean [] m_Min;
        protected boolean [] m_Avg;
        protected boolean [] m_Max;
        protected boolean [] m_SD;
         * Creates the tablemodel with the given set of instances.
         * @param instances the initial set of Instances
        public FunctionTableModel() {
          counter =0;
             func_vector = new Vector();
         public FunctionTableModel(Vector vec) {
            func_vector = vec;
        public Vector getDataVector(){
            return func_vector;
         * Sets the tablemodel to look at a new set of instances.
         * @param instances the new set of Instances.
        public void setElement(Vector vec) {
               for(int i=0;i<vec.size();i++){
            func_vector.add(vec.elementAt(i));
            counter++;
          fireTableDataChanged();   
          m_Sum = new boolean [counter];
          m_Min = new boolean[counter];
          m_Avg = new boolean[counter];
          m_Max = new boolean[counter];
          m_SD = new boolean[counter];
         * Gets the number of attributes.
         * @return the number of attributes.
        public int getRowCount() {
               return func_vector.size();
         * Gets the number of columns: 3
         * @return 3
        public int getColumnCount() {
          return 6;
         * Gets a table cell
         * @param row the row index
         * @param column the column index
         * @return the value at row, column
        public Object getValueAt(int row, int column) {
          switch (column) {
          case 0:
            return func_vector.elementAt(row);
          case 1:
            return new Boolean(m_Sum[row]);
          case 2:
            return new Boolean(m_Min[row]);
          case 3:
            return new Boolean(m_Avg[row]);
          case 4:
            return new Boolean(m_Max[row]);
          case 5:
            return new Boolean(m_SD[row]); 
          default:
            return null;
        public void removeAll(){
            func_vector.removeAllElements();
            fireTableDataChanged();
         * Gets the name for a column.
         * @param column the column index.
         * @return the name of the column.
        public String getColumnName(int column) {
          switch (column) {
          case 0:
            return new String("Function Selected");
          case 1:
            return new String("Sum");
          case 2:
            return new String("Min");
          case 3:
            return new String("Avg");
          case 4:
            return new String("Max");
          case 5:
            return new String("SD");   
          default:
         return null;
         * Sets the value at a cell.
         * @param value the new value.
         * @param row the row index.
         * @param col the column index.
        public void setValueAt(Object value, int row, int col) {
          if(col == 0){
            counter++;
            func_vector.add(counter,value.toString());
          if (col == 1)
            m_Sum[row] = ((Boolean) value).booleanValue();
          if (col == 2)
            m_Min[row] = ((Boolean) value).booleanValue();
          if (col == 3)
            m_Avg[row] = ((Boolean) value).booleanValue();
          if (col == 4)
            m_Max[row] = ((Boolean) value).booleanValue();
          if (col == 5)
            m_SD[row] = ((Boolean) value).booleanValue();       
         * Gets the class of elements in a column.
         * @param col the column index.
         * @return the class of elements in the column.
        public Class getColumnClass(int col) {
             return getValueAt(0, col).getClass();
         * Returns true if the column is the "selected" column.
         * @param row ignored
         * @param col the column index.
         * @return true if col == 1.
        public boolean isCellEditable(int row, int col) {
          if (col >= 1) {
             return true;
          return false;
        public void removeRow(int row){
            if(row<=func_vector.size()){
                          func_vector.removeElementAt(row);
                counter--;
            fireTableDataChanged();
        }

    hi parvathi,
    i have made changes to my previous code and here's the code:
      class FunctionTableModel extends DefaultTableModel{
           /** The instances who's attribute structure we are reporting */
        //protected InitModel m_init;
        protected String func_element;
        protected int counter;
        protected int counter1;
        //protected String[] func_array;
        protected Vector func_vector;
        /** The flag for whether the instance will be included */
        protected boolean [] m_Sum;
        protected boolean [] m_Min;
        protected boolean [] m_Avg;
        protected boolean [] m_Max;
        protected boolean [] m_SD;
        //protected Vector m_Sum1;
        //protected Vector m_Min1;
        //protected Vector m_Avg1;
        //protected Vector m_Max1;
        //protected Vector m_SD1;
         * Creates the tablemodel with the given set of instances.
         * @param instances the initial set of Instances
        public FunctionTableModel() {
            System.out.println("entered the constr");
          counter =0;
          //counter1=0;
          //m_Sum1 = new Vector();
          //m_Min1 = new Vector();
          //m_Avg1 = new Vector();
          //m_Max1 = new Vector();
          //m_SD1 = new Vector();
          //func_array = new String[];
          func_vector = new Vector();
         public FunctionTableModel(Vector vec) {
            func_vector = vec;
            //setElement(func_vector);
        public Vector getDataVector(){
            return func_vector;
         * Sets the tablemodel to look at a new set of instances.
         * @param instances the new set of Instances.
        public void addRow(Vector vec) {
          //counter++; 
          //func_element = ele;
          //System.out.println("FunctionTableModel- setElement() method");
          for(int i=0;i<vec.size();i++){
            func_vector.add(vec.elementAt(i));
            counter++;  
           //System.out.println("counter ="+counter+new boolean[counter]); 
            //m_Sum1 = m_Sum;
            //m_Min1 = m_Min;
            //m_Avg1 = m_Avg;
            //m_Max1 = m_Max;
            //m_SD1 = m_SD;
            //m_Sum = new boolean[counter];
            //System.out.println("at setElement");
            m_Sum = new boolean[counter];
            //System.out.println(counter);
            m_Min = new boolean[counter];
            //m_Min;
            m_Avg = new boolean[counter];
            //m_Avg1 = m_Avg;
            m_Max = new boolean[counter];
            //m_Max1 = m_Max;
            m_SD = new boolean[counter];
            //m_SD1 = m_SD;
            //counter1++;
          //func_array[counter]=ele;
          //func_vector.add(counter,ele);
          fireTableDataChanged();  
         * Gets the number of attributes.
         * @return the number of attributes.
        //public int getRowCount() {
          //System.out.println("FunctionTableModel- getRowCount() method");
          //return func_vector.size();
         * Gets the number of columns: 3
         * @return 3
        public int getColumnCount() {
          return 6;
         * Gets a table cell
         * @param row the row index
         * @param column the column index
         * @return the value at row, column
        public Object getValueAt(int row, int column) {
          switch (column) {
          case 0:
            return func_vector.elementAt(row);
          case 1:{
            //System.out.println("in case 1");
            //Boolean m_Sum_Value = new Boolean(m_Sum[row]);
            //System.out.println("m_Sum_Value:"+m_Sum_Value.booleanValue());
            return new Boolean(m_Sum[row]);
            //m_Sum1.add(m_Sum_Value);
            //return m_Sum_Value;
          case 2:
            return new Boolean(m_Min[row]);
          case 3:
            return new Boolean(m_Avg[row]);
          case 4:
            return new Boolean(m_Max[row]);
          case 5:
            return new Boolean(m_SD[row]); 
          default:
            return null;
        public void removeAll(){
            func_vector.removeAllElements();
            //m_Sum1.removeAllElements();
            fireTableDataChanged();
         * Gets the name for a column.
         * @param column the column index.
         * @return the name of the column.
        public String getColumnName(int column) {
          switch (column) {
          case 0:
            return new String("Function Selected");
          case 1:
            return new String("Sum");
          case 2:
            return new String("Min");
          case 3:
            return new String("Avg");
          case 4:
            return new String("Max");
          case 5:
            return new String("SD");   
          default:
         return null;
         * Sets the value at a cell.
         * @param value the new value.
         * @param row the row index.
         * @param col the column index.
        public void setValueAt(Object value, int row, int col) {
          if(col == 0){
            counter++;
            func_vector.add(counter,value.toString());
          if (col == 1) {
            m_Sum[row] = ((Boolean) value).booleanValue();
            //System.out.println("m_Sum length "+m_Sum.length);
            //for(int i=0;i<=row;i++)
            //    System.out.println("m_Sum1 "+i+((Boolean)m_Sum1.elementAt(i)).booleanValue());
            //System.out.println("m_Sum1["+row+"] "+ ((Boolean)m_Sum1.elementAt(row)).booleanValue());
            //    System.out.println("m_Sum["+i+"] "+ m_Sum);
    if (col == 2)
    m_Min[row] = ((Boolean) value).booleanValue();
    if (col == 3)
    m_Avg[row] = ((Boolean) value).booleanValue();
    if (col == 4)
    m_Max[row] = ((Boolean) value).booleanValue();
    if (col == 5)
    m_SD[row] = ((Boolean) value).booleanValue();
    * Gets the class of elements in a column.
    * @param col the column index.
    * @return the class of elements in the column.
    public Class getColumnClass(int col) {
    return getValueAt(0, col).getClass();
    * Returns true if the column is the "selected" column.
    * @param row ignored
    * @param col the column index.
    * @return true if col == 1.
    public boolean isCellEditable(int row, int col) {
    if (col >= 1) {
         return true;
    return false;
    public void removeRow(int row){
    if(row<=func_vector.size()){
    func_vector.removeElementAt(row);
    counter--;
    fireTableDataChanged();
    previouslu i was using the setElement method. now i have replaced with the addRow method...
    but anyways...the control is not going to any of these overridden methods...and none of the elements are added to the table. But i comment of all the addRow, getValueAt, getColumnClass methods...then it's adding rows to the table but with only the first column all the remaiing columns are just empty...
    i am fed up with this...if you observe i have commented out somany lines...becoz i am trying to save my boolean array values into a vector..but that was also in vain...
    i appreciate for ur help...
    thanks
    sri

  • ORA-01403: no data found Problem when using AUTOMATIC ROW FETCH to populate

    ORA-01403: no data found Problem when using AUTOMATIC ROW FETCH to populate a form.
    1) Created a FORM on EMP using the wizards. This creates an AUTOMATIC ROW FETCH
    TABLE NAME - EMP
    Item Containing PRIMARY KEY - P2099_EMPNO
    Primary key column - EMPNO
    By default the automatic fetch has a ‘Process Error Message’ of ‘Unable to fetch row.’
    2) Created a HTML region. Within this region add
    text item P2099_FIND_EMPNO
    Button GET_EMP to submit
    Branch Modified the conditional branch created during button creation to set P2099_EMPNO with &P2099_FIND_EMPNO.
    If I then run the page, enter an existing employee number into P2099_EMPNO and press the GET_EMP button the form is populated correctly. But if I enter an employee that does not exist then I get the oracle error ORA-01403: no data found and no form displayed but a message at the top of the page ‘Action Processed’.I was expecting a blank form to be displayed with the message ‘Unable to fetch row.’
    I can work around this by making the automated fetch conditional so that it checks the row exists first. Modify the Fetch row from EMP automated fetch so that it is conditional
    EXIST (SQL query returns at least one row)
    select 'x'
    from EMP
    where EMPNO = :P2099_EMPNO
    But this means that when the employee exists I must be fetching from the DB twice, once for the condition and then again for the actual row fetch.
    Rather than the above work around is there something I can change so I don’t get the Oracle error? I’m now wondering if the automatic row fetch is only supposed to be used when linking a report to a form and that I should be writing the fetch process manually. The reason I haven’t at the moment is I’m trying to stick with the automatic wizard generation as much as I can.
    Any ideas?
    Thanks Pete

    Hi Mike,
    I've tried doing that but it doesn't seem to make any difference. If I turn debug on it shows below.
    0.05: Computation point: AFTER_HEADER
    0.05: Processing point: AFTER_HEADER
    0.05: ...Process "Fetch Row from EMP": DML_FETCH_ROW (AFTER_HEADER) F|#OWNER#:EMP:P2099_EMPNO:EMPNO
    0.05: Show ERROR page...
    0.05: Performing rollback...
    0.05: Processing point: AFTER_ERROR_HEADER
    I don't really wan't the error page, either nothing with the form not being populated or a message at the top of the page.
    Thanks Pete

  • Fail to Abend when Row Not Found for Update?

    I'm using Coldfusion 9 against a IBM mainframe DB2 database.  I have a condition that when a row is not found for update in a cfquery, execute an insert cfquery.  Sounds logical and easy, right?  Not so!  Error trapping is failing to return an error condition when the row was not found for update! 
    Here's the code:
    <cftry>
         <cfinclude template="qry_update_table.cfm">
         <cfcatch type="any">
              <cfinclude template="dsp_errorInformation.cfm">
              <cfabort>
         </cfcatch>
    </cftry>
    <cfdump var=#tmec04_result#><cfabort>
    The Query code is:
    <cflock timeout="15" name="UpdateTUID04Lock" type="exclusive">
         <cfquery datasource="#APPLICATION.DB2_DSN#" name="update_tuid04" result="tmec04_result">
              UPDATE #APPLICATION.SQLID#.TUID04
                   SET   MON_BEG_TIME  = <cfqueryparam value = #NEW_MON_BEG# cfsqltype="cf_sql_time">
                          , MON_END_TIME  = <cfqueryparam value = #NEW_MON_END# cfsqltype="cf_sql_time">
              WHERE  USER_ID    = <cfqueryparam value = #NEW_USER_ID# cfsqltype="cf_sql_varchar">
         </cfquery>
    </cflock>
    There is no row for the NEW_USER_ID, so I would expect an error condition.  No such luck.  The dump of temc04_result just shows me the SQL, the record count (0), the execution time (0), and the cached status (false).  No SQL code.  And a dump of CFCATCH shows that all is well.  I expected to get cfcatch.nativeerrorcode = 100 (Row not found).  Nope.  Got a zero.
    Any suggestions.

    Regarding this:
    There is no row for the NEW_USER_ID, so I would expect an error condition.
    Your expectation is incorrect.  What actually happens is that the query executes and no rows get updated.
    What has to happen is that you have to see whether or not the record is there, and if not, insert it.  There are lot's of ways to do that.  I think the simplest is an insert query,
    insert into yourtable
    (field1, field2, etc)
    select distinct value1, value2, etc
    from some small table
    where not exists (something)
    Followed by the update query.

  • JClient - Strange Behaviour when using multiple-row-selection

    Hi!
    In my application a problem occures whenever I want to select multple rows in a JTable...
    I am using a JTable bound to a ViewObject which displays quite a lot of rows. For further processing I need to select more than one row. So I changed the code the following way:
    table.setModel(JUTableBinding.createAttributeListBinding(panelBinding, table, "SomeView", null, "SomeViewIter", new String[] {"FirstAttribute", "SecondAttribute"}));
    table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    Basically there are 2 problems:
    Whenever I want to select several rows or intervals by dragging the mouse or by using cursers, older selections disappear.
    When I select rows and then use the scrollbar, all selections but one disappear.
    Is there something wrong in my implementation or is this another bug? That's one of those little things, that make life of developers and end-users hard.
    Any suggestions? Thanks a lot!

    Hi!
    In my application a problem occures whenever I want to select multple rows in a JTable...
    I am using a JTable bound to a ViewObject which displays quite a lot of rows. For further processing I need to select more than one row. So I changed the code the following way:
    table.setModel(JUTableBinding.createAttributeListBinding(panelBinding, table, "SomeView", null, "SomeViewIter", new String[] {"FirstAttribute", "SecondAttribute"}));
    table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);JUTableBinding only works with Single-selection model as it needs to track currency based on the current selection.
    You'd have to implement a custom Table-model that wraps the built-in table model (quite like what's done in the 'table sorting example' at
    http://otn.oracle.com/sample_code/products/jdev/jclient/jclient_table_sorting_sample.html
    Then you may implement multiple selection and fake single selection model (last selected row perhaps) to the JUTableBinding's tableModel.
    Basically there are 2 problems:
    Whenever I want to select several rows or intervals by dragging the mouse or by using cursers, older selections disappear.
    When I select rows and then use the scrollbar, all selections but one disappear.
    Is there something wrong in my implementation or is this another bug? That's one of those little things, that make life of developers and end-users hard.
    Any suggestions? Thanks a lot!

  • Sysdate changes when number of rows selected are huge

    My requirement is that same date and time should be selected for all the rows returned by the query.
    Eg: Select empno, ename , sysdate from Emp
    If the query runs for more than a second, then the second component of SYSDATE will be different.
    What I want is that the query firing time should be selected for all the rows returned by the query.
    I hope there should be a way in Oracle to do this

    Have you actually seen this happen?
    On testing in Oracle 8.1.7i environment with a query
    select col1, col2, to_char(sysdate,'hh24:mi:ss')
    from big_table;
    which returned approx 3m rows and executed for over 8 minutes the sysdate value was the same for the first row selected and the last row selected, and was the time at the start of the query.
    Kevin is correct that Oracle gets the the value of Sysdate once when the query is executed and uses that value until the time that a new query is parsed.
    HTH
    Dave

  • Error: Encountered a SELECT WHEN EXPECTING the following ( + - all mod num

    I have a conditional INSERT statement where I update the record if todays date is found in the table or i will INSERT a new record if that date is not found..
    Insert statement that comes after ELSE works fine but IF part fails with the error
    encountered a select when expecting the following
    *( - + all case mod new null.. and lot more*
    IF EXISTS
    (SELECT (TO_CHAR(UpdateDate, 'MM/DD/YYYY')) FROM EmployeeUpdateEmails
         WHERE UpdateDate = select (TO_CHAR(sysdate, 'MM/DD/YYYY')) from dual)
         UPDATE EMPLOYEEUPDATEEMAILS
    SET EMP_MGR_TOTAL_CHANGES = total
         WHERE UpdateDate = select (TO_CHAR(sysdate, 'MM/DD/YYYY')) from dual
    ELSE
    This is how EmployeeUpdateEmails table is created
    CREATE TABLE EmployeeUpdateEmails
    UpdateNum SMALLINT          PRIMARY KEY,
    UpdateDate               DATE,
    Emp_Mgr_Total_Changes SMALLINT,
    Emp_Term_Total_Chnages SMALLINT
    Please Help

    IF EXISTS is not aproppriate syntax:
    SQL> declare
      2  begin
      3   if exists (select count(*) from dual)
      4   then
      5     dbms_output.put_line('it exists');
      6   else
      7     dbms_output.put_line('it doesn''t exist');
      8   end if;
      9  end;
    10  /
    if exists (select count(*) from dual)
    ERROR at line 3:
    ORA-06550: line 3, column 5:
    PLS-00204: function or pseudo-column 'EXISTS' may be used inside a SQL statement only
    ORA-06550: line 3, column 2:
    PL/SQL: Statement ignored
    SQL> declare
      2   my_var number; 
      3  begin
      4  
      5   select count(*) into my_var
      6   from   dual;
      7  
      8   if my_var >= 1
      9   then
    10     dbms_output.put_line('it exists');
    11   else
    12     dbms_output.put_line('it doesn''t exist');
    13   end if;
    14  end;
    15  /
    it exists
    PL/SQL procedure successfully completed.If you're using SQL then
    1) post the complete statement
    2) mention your database version ( the result of: select * from v$version; )
    3) consider using CASE:
    SQL> select case
      2           when (select count(*) from dual) >= 1
      3           then 'it exists'
      4           else 'it doesn''t exist'
      5         end
      6  from   dual;
    CASEWHEN(SELECTC
    it exists
    1 row selected.

  • Select more than 1 row

    hi!
    I'm looking for a method that can help me taking out of my database the number of rows I want for each page to be displayed...
    ...something like select the first 10 rows,
    than from 11 to 20 and so on...
    ...can somebody help me?

    Here. Remember to fill in the correct username and password and table and column names in the SQL query.
    Hope it helps.
    Mel.
    import java.sql.*;
    public class DatabaseTest
      public static void main(String[] args)
        ResultSet rs = null;
        /** URL of database */
        String URL = "jdbc:mysql://localhost/database_name";
        /** Username used to connect to database */
        String userName = "username";
        /** Password required to connect to database */
        String password = "password";
        /** Database Driver class name */
        String driverName = "org.gjt.mm.mysql.Driver";
        /** SQL Query **/
        String sql = "SELECT * FROM tablename ORDER BY column_name LIMIT 0, 10";
        //Connection
        Connection connection = null;
        boolean isConnected = false;
        //Statement
        Statement statement;
        try
          //Load the driver
          Class.forName(driverName);
          //Connect to the database
          connection = DriverManager.getConnection(URL, userName, password);
          isConnected = true;
        //Catch an error if we couldn't connect
        catch (Exception e)
          System.err.println("Couldn't connect to database. Error: " + e);
          // Kill the connection object
          connection = null;
          isConnected = false;
        try
          //Create a new statement object
          statement = connection.createStatement();
          //Execute the query
          rs = statement.executeQuery(sql);
          if(!rs.next()) System.out.println("No Results found");
           else
             do
               //Print out the results found in the query
               System.out.println("1: " + rs.getString(1));
               System.out.println("2: " + rs.getString(2));
             while(rs.next());
          statement.close();
          connection.close();     
        } //End of try
        catch (Exception e)
          System.err.println(
            "ERROR: Could not connect to database when executing query" + e);
        } //End of catch
    }

  • Deadlock when updating different rows on a single table with one clustered index

    Deadlock when updating different rows on a single table with one clustered index. Can anyone explain why?
    <event name="xml_deadlock_report" package="sqlserver" timestamp="2014-07-30T06:12:17.839Z">
      <data name="xml_report">
        <value>
          <deadlock>
            <victim-list>
              <victimProcess id="process1209f498" />
            </victim-list>
            <process-list>
              <process id="process1209f498" taskpriority="0" logused="1260" waitresource="KEY: 8:72057654588604416 (8ceb12026762)" waittime="1396" ownerId="1145783115" transactionname="implicit_transaction"
    lasttranstarted="2014-07-30T02:12:16.430" XDES="0x3a2daa538" lockMode="X" schedulerid="46" kpid="7868" status="suspended" spid="262" sbid="0" ecid="0" priority="0"
    trancount="2" lastbatchstarted="2014-07-30T02:12:16.440" lastbatchcompleted="2014-07-30T02:12:16.437" lastattention="1900-01-01T00:00:00.437" clientapp="Internet Information Services" hostname="CHTWEB-CH2-11P"
    hostpid="12776" loginname="chatuser" isolationlevel="read uncommitted (1)" xactid="1145783115" currentdb="8" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128058">
               <inputbuf>
    UPDATE analyst_monitor SET cam_status = N'4', cam_event_data = N'sales1', cam_event_time = current_timestamp , cam_modified_time = current_timestamp , cam_room = '' WHERE cam_analyst_name=N'ABCD' AND cam_window= 2   </inputbuf>
              </process>
              <process id="process9cba188" taskpriority="0" logused="2084" waitresource="KEY: 8:72057654588604416 (2280b457674a)" waittime="1397" ownerId="1145783104" transactionname="implicit_transaction"
    lasttranstarted="2014-07-30T02:12:16.427" XDES="0x909616d28" lockMode="X" schedulerid="23" kpid="8704" status="suspended" spid="155" sbid="0" ecid="0" priority="0"
    trancount="2" lastbatchstarted="2014-07-30T02:12:16.440" lastbatchcompleted="2014-07-30T02:12:16.437" lastattention="1900-01-01T00:00:00.437" clientapp="Internet Information Services" hostname="CHTWEB-CH2-11P"
    hostpid="12776" loginname="chatuser" isolationlevel="read uncommitted (1)" xactid="1145783104" currentdb="8" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128058">
                <inputbuf>
    UPDATE analyst_monitor SET cam_status = N'4', cam_event_data = N'sales2', cam_event_time = current_timestamp , cam_modified_time = current_timestamp , cam_room = '' WHERE cam_analyst_name=N'12345' AND cam_window= 1   </inputbuf>
              </process>
            </process-list>
            <resource-list>
              <keylock hobtid="72057654588604416" dbid="8" objectname="CHAT.dbo.analyst_monitor" indexname="IX_Clust_scam_an_name_window" id="lock4befe1100" mode="X" associatedObjectId="72057654588604416">
                <owner-list>
                  <owner id="process9cba188" mode="X" />
                </owner-list>
                <waiter-list>
                  <waiter id="process1209f498" mode="X" requestType="wait" />
                </waiter-list>
              </keylock>
              <keylock hobtid="72057654588604416" dbid="8" objectname="CHAT.dbo.analyst_monitor" indexname="IX_Clust_scam_an_name_window" id="lock18ee1ab00" mode="X" associatedObjectId="72057654588604416">
                <owner-list>
                  <owner id="process1209f498" mode="X" />
                </owner-list>
                <waiter-list>
                  <waiter id="process9cba188" mode="X" requestType="wait" />
                </waiter-list>
              </keylock>
            </resource-list>
          </deadlock>
        </value>
      </data>
    </event>

    To be honest, I don't think the transaction is necessary, but the developers put it there anyway. The select statement will put the result cam_status
    into a variable, and then depends on its value, it will decide whether to execute the second update statement or not. I still can't upload the screen-shot, because it says it needs to verify my account at first. No clue at all. But it is very simple, just
    like:
    Clustered Index Update
    [analyst_monitor].[IX_Clust_scam_an_name_window]
    cost: 100%
    By the way, for some reason, I can't find the object based on the associatedObjectId listed in the XML
    <keylock hobtid="72057654588604416" dbid="8" objectname="CHAT.dbo.analyst_monitor"
    indexname="IX_Clust_scam_an_name_window" id="lock4befe1100" mode="X" associatedObjectId="72057654588604416">
    For example: 
    SELECT * FROM sys.partition WHERE hobt_id = 72057654588604416
    This return nothing. Not sure why.

  • Row Not Found from executeQuery

    Statement sql = con.createStatement();
    ResultSet rs = sql.executeQuery("select * from emp);
    How do you know if the executeQuery has returned any rows ? How do you test for row not found.
    thanks

    I'm a bit unclear on what this topic is about . Are you trying to prove a point that you could write a driver that works the way you say and still be within JDBC specs, or are you actually having a problem? I've used JDBC Drivers from many vendors and the code I gave you would work with all of them as described. The following was cut and pasted from the online docuementation and would appear to is is from the Java Doc for the ResultSet Interface and it seems to validate that the code I gave you is correct (assuming that a null ResultSet cannot be returned when using executeQuery).
    "A ResultSet object maintains a cursor pointing to its current row of data. Initially the cursor is positioned before the first row. The next method moves the cursor to the next row, and because it returns false when there are no more rows in the ResultSet object, it can be used in a while loop to iterate through the result set. "
    Here is the online documentation that states that a ResultSet will NEVER be null when invoking executeQuery:
    executeQuery
    public ResultSet executeQuery(String sql)
    throws SQLExceptionExecutes the given SQL statement, which returns a single ResultSet object.
    Parameters:
    sql - an SQL statement to be sent to the database, typically a static SQL SELECT statement
    Returns:
    a ResultSet object that contains the data produced by the given query; never null
    Throws:
    SQLException - if a database access error occurs or the given SQL statement produces anything other than a single ResultSet object
    So, I would reiterate that this is not a code problem. If you are getting an Exception, then the problem lies elsewhere.

  • ALV: Need to select/deselect all output rows iwth a Button

    Hi All,
    I have an ALV grid displaying a few lines of data.
    User needs a button in the application toolbar to SELECT/DESELECT all rows displayed in the ALV list.
    I am using OO for displaying the layout.
    I want to know if there is a method which can SELECT/DESELECT all displayed rows. If there is no method, is there a workaround of achieving same.
    Just for your info I dont have a check-box as the first colum of my ALV.
    Appreciate your feedback on same.
    Thanks and Regards
    Rajiv

    hi
    chk this out
    TYPE-POOLS : SLIS.
    Tables                                                              *
    TABLES:
      VBRK,
      VBRP.
    Parameters and select options OR SELECTION SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS:
                S_VBELN FOR VBRK-VBELN.
    SELECTION-SCREEN END OF BLOCK B1.
    Internal Tables                                                     *
    work areas
    DATA: BEGIN OF IT_VBRP OCCURS 0,
           VBELN LIKE VBRK-VBELN,
           POSNR LIKE VBRP-POSNR,
           UEPOS LIKE VBRP-UEPOS,
           FKIMG LIKE VBRP-FKIMG,
           NETWR LIKE VBRP-NETWR,
           MEINS LIKE VBRP-MEINS.
    DATA : END OF IT_VBRP.
    Variables                                                           *
    DATA : GR_ALVGRID TYPE REF TO CL_GUI_ALV_GRID,
           GC_CUSTOM_CONTROL_NAME TYPE SCRFNAME VALUE 'CC_ALV',
           GR_CCONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
           GT_FIELDCAT TYPE LVC_T_FCAT,
           GS_LAYOUT TYPE LVC_S_LAYO,
           V_FLAG VALUE 'X'.
    Start of Program                                                    *
          INITIALIZATION.                                               *
    INITIALIZATION.
      S_VBELN-LOW = 1.
      S_VBELN-HIGH = 1000000000.
      S_VBELN-OPTION = 'EQ'.
      S_VBELN-SIGN = 'I'.
      APPEND S_VBELN.
          SELECTION-SCREEN                                              *
    AT SELECTION-SCREEN.
      PERFORM VALIDATION.
          START-OF-SELECTION                                            *
    START-OF-SELECTION.
      PERFORM GET_DATA.
      CALL SCREEN 0100.
          END-OF-SELECTION                                              *
    END-OF-SELECTION.
          TOP-OF-PAGE                                                   *
    TOP-OF-PAGE.
          END-OF-PAGE                                                   *
    END-OF-PAGE.
          AT USER-COMMAND                                               *
    *&      Form  VALIDATION
          text
    -->  p1        text
    <--  p2        text
    FORM VALIDATION .
      SELECT SINGLE VBELN
      FROM VBRK
      INTO VBRK-VBELN
      WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'no billing documents found'.
      ENDIF.
    ENDFORM.                    " VALIDATION
    *&      Form  GET_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM GET_DATA .
      SELECT VBELN
             POSNR
             UEPOS
             FKIMG
             NETWR
             MEINS
      FROM VBRP
      INTO TABLE IT_VBRP
      WHERE VBELN IN S_VBELN.
    ENDFORM.                    " GET_DATA
    *&      Module  DISPLAY_ALV  OUTPUT
          text
    MODULE DISPLAY_ALV OUTPUT.
      IF V_FLAG = 'X'.
        PERFORM DISPLAY_ALV.
        PERFORM PREPARE_FIELD_CATALOG CHANGING GT_FIELDCAT.
        PERFORM PREPARE_LAYOUT CHANGING GS_LAYOUT.
        CALL METHOD GR_ALVGRID->SET_TABLE_FOR_FIRST_DISPLAY
            EXPORTING
         I_BUFFER_ACTIVE               =
         I_BYPASSING_BUFFER            =
         I_CONSISTENCY_CHECK           =
         I_STRUCTURE_NAME              = 'VBRP'
         IS_VARIANT                    =
         I_SAVE                        =
         I_DEFAULT                     = 'X'
              IS_LAYOUT                     = GS_LAYOUT
         IS_PRINT                      =
         IT_SPECIAL_GROUPS             =
         IT_TOOLBAR_EXCLUDING          =
         IT_HYPERLINK                  =
         IT_ALV_GRAPHICS               =
         IT_EXCEPT_QINFO               =
            CHANGING
              IT_OUTTAB                     = IT_VBRP[]
              IT_FIELDCATALOG               = GT_FIELDCAT
         IT_SORT                       =
         IT_FILTER                     =
            EXCEPTIONS
              INVALID_PARAMETER_COMBINATION = 1
              PROGRAM_ERROR                 = 2
              TOO_MANY_LINES                = 3
              OTHERS                        = 4
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                     WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          CALL METHOD GR_ALVGRID->SET_READY_FOR_INPUT
            EXPORTING
              I_READY_FOR_INPUT = 1.
        ELSE.
          CALL METHOD GR_ALVGRID->REFRESH_TABLE_DISPLAY
       EXPORTING
         IS_STABLE      =
         I_SOFT_REFRESH =
            EXCEPTIONS
              FINISHED       = 1
              OTHERS         = 2
          IF SY-SUBRC <> 0.
            MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                       WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          ENDIF.
        ENDIF.
        CLEAR V_FLAG.
      ENDIF.
    ENDMODULE.                 " DISPLAY_ALV  OUTPUT
    *&      Form  DISPLAY_ALV
          text
    -->  p1        text
    <--  p2        text
    FORM DISPLAY_ALV .
      IF GR_ALVGRID IS INITIAL.
        CREATE OBJECT GR_ALVGRID
          EXPORTING
       I_SHELLSTYLE      = 0
       I_LIFETIME        =
            I_PARENT          = GR_CCONTAINER
       I_APPL_EVENTS     = space
       I_PARENTDBG       =
       I_APPLOGPARENT    =
       I_GRAPHICSPARENT  =
       I_NAME            =
          EXCEPTIONS
            ERROR_CNTL_CREATE = 1
            ERROR_CNTL_INIT   = 2
            ERROR_CNTL_LINK   = 3
            ERROR_DP_CREATE   = 4
            OTHERS            = 5
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                     WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ENDIF.
    ENDFORM.                    " DISPLAY_ALV
    *&      Form  PREPARE_FIELD_CATALOG
          text
         <--P_GT_FIELDCAT  text
    FORM PREPARE_FIELD_CATALOG  CHANGING P_GT_FIELDCAT TYPE LVC_T_FCAT.
      DATA : LS_FCAT TYPE LVC_S_FCAT,
             L_POS TYPE I.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'VBELN'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Billing Document'.
      LS_FCAT-OUTPUTLEN = '10'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'POSNR'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Billing Item'.
      LS_FCAT-OUTPUTLEN = '6'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'UEPOS'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Higher Level Item'.
      LS_FCAT-OUTPUTLEN = '6'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'FKIMG'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Invoice Quantity'.
      LS_FCAT-OUTPUTLEN = '13'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'NETWR'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Net Value'.
      LS_FCAT-OUTPUTLEN = '15'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'MEINS'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Unit of Measure'.
      LS_FCAT-OUTPUTLEN = '3'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
    ENDFORM.                    " PREPARE_FIELD_CATALOG
    *&      Form  PREPARE_LAYOUT
          text
         <--P_GS_LAYOUT  text
    FORM PREPARE_LAYOUT  CHANGING P_GS_LAYOUT TYPE LVC_S_LAYO.
      P_GS_LAYOUT-ZEBRA = 'X'.
      P_GS_LAYOUT-GRID_TITLE = 'INVOICE DETAILS'.
      P_GS_LAYOUT-SMALLTITLE = 'X'.
      P_GS_LAYOUT-EDIT = 'X'.
    ENDFORM.                    " PREPARE_LAYOUT
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'CANCEL'.
    SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
      CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
        WHEN 'CANCEL'.
          LEAVE TO SCREEN 0.
        WHEN 'EXIT'.
          CALL TRANSACTION 'SE38'.
        WHEN 'CHANGE'.
          IF GR_ALVGRID->IS_READY_FOR_INPUT( ) = 0.
            CALL METHOD GR_ALVGRID->SET_READY_FOR_INPUT
              EXPORTING
                I_READY_FOR_INPUT = 1.
          ELSE.
            CALL METHOD GR_ALVGRID->SET_READY_FOR_INPUT
              EXPORTING
                I_READY_FOR_INPUT = 0.
          ENDIF.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT

  • Error for open process order when BOM alternative is not found

    Dear colleagues,
    When I open process order. BOM alternative is selected according to the production version. But when  BOM alternative is not found system gives only information message and I can open process order, I want to prevent open process order when there is no BOM alternative according to the production version. Because the Bom can be deleted after creation production version.
    Thanks for your helping,

    Hi,
    U need to use an enhancement at the creation of order to check the active status of the bom and restricting the order creation when BOM status is inactive.
    see whether following enhancement is useful for your scenario:
    PPCO0006 Enhancement & EXIT_SAPLCOZF_003
    Please confirm.
    Regards
    Suri

  • Error in replicat when updating a row

    Oracle 11gR2
    OGG 11.1.1.1.5
    I am getting the following error when updating a row that exists in both the target and source db:
    OCI Error ORA-01403: no data found, SQL <UPDATE....The following is in the discard file:
    Record not found
    Mapping problem with compressed key update record (target format)...
    ...The row DOES exist in the target db for sure. But for some reason it thinks that it is not there...why?
    Here are the exact steps I did:
    1. Created a table in source
    2. Create the same table in target (explicitly not through replication as we have an exclude filter on 'CREATE')
    3. Inserted rows into source table (which were replicated to target table).
    4. Delete a row in the source table (which were not applied to target as I am using the IGNOREDELETE parameter)
    5. Update a row in the source table (this is where I got the above mentioned error 'ORA-1403' even though the row does exist.)

    mb_ogg is very likely right - you forgot to "add trandata" as that's the number one most common reason for an ORA-1403 (ANSI 100) no data found error.
    The problem is that Oracle does not automatically log the PK, it only logs that which changed. Down at the replicat on the target it tries to update but the WHERE clause has PK = NULL because it was not logged in the redo. To have it logged in the redo so that the target UPDATE statement has a correct value for PK, you need to use GGSCI to issue "add trandata," which performs an "ALTER TABLE ADD SUPPLEMENTAL LOG GROUP ... ALWAYS".
    "INFO TRANDATA", if using OGG version 11.2+ on Oracle it will tell you if logging is enabled on a table and for which columns.
    Good luck,
    -joe

  • How do I select a range of rows from an internal table in the debugger?

    Hi,
    I have a case where I wanted to delete a range of rows (several thousand) from an internal table using the debugger.
    It seems that rows can only be selected one at a time by selecting (clicking) on the far left side of the row.
    This is cumbersome, if not impossible when wishing to delete several thousand rows. 
    Other tools, such as Excel for example, allow for selecting a range of rows by selecting the first row and then holding the SHIFT key and selecting the last row and all rows in between will be selected.
    I can't seem to find the combination of keys that will allow this in the table (or structure) tab of the debugger.
    Is it possible to select a range of rows without having to select each row one at a time?
    Thanks for your help,
    Andy

    While it's a Table Control and should/could have a button to select all fields (or visible fields)...I don't think we can do it right now...I know it's a pain to select each row one at a time...but I don't we have any more options...
    Greetings,
    Blag.

  • How to find a dependent row in the all tables using single SQL query

    hi all,
    I have created some table with master and some dependent tables.I want to mark a (row)tuple as inactive in master so that corresponding child records also should be marked as inactive.
    So i decided to mark the master and dependent records as inactive starting from master table and traverse to child tables.
    So I need SQL query to fetch all dependend records to the row(marked row in the master ) from the master table and dependent rows from the child row and to mark as flag inactive.
    can anybody help me out to build this query or any other way to mark flag as inactive ?
    Regards
    punithan

    You can find dependant tables from ALL_CONSTRAINTS, e.g:
    SQL> CREATE TABLE m (id INT PRIMARY KEY, flag VARCHAR2(1) NOT NULL);
    Table created.
    SQL> CREATE TABLE d1 (m_id REFERENCES m, flag VARCHAR2(1) NOT NULL);
    Table created.
    SQL> CREATE TABLE d2 (m_id REFERENCES m, flag VARCHAR2(1) NOT NULL);
    Table created.
    SQL> SELECT table_name, owner, status
      2  FROM   all_constraints c
      3  WHERE  c.constraint_type = 'R'
      4  AND    ( c.r_owner, c.r_constraint_name ) IN
      5         ( SELECT owner, constraint_name
      6           FROM   user_constraints
      7           WHERE  table_name = 'M'
      8           AND    constraint_type IN ('U','P') );
    TABLE_NAME                     OWNER                          STATUS
    D2                             WILLIAMR                       ENABLED
    D1                             WILLIAMR                       ENABLED
    2 rows selected.There is no SQL command to apply all updates in one go, if that's what you were looking for.
    AFAIK the word "tuple" is for mathematics and relational theory, and does not refer to a physical row in a database.

Maybe you are looking for