How to sort a column of type CHAR

Hi,
I have a report for which the o/p is displayed in ALV grid format.There is one column in the O/p strcuture which is "No of days".Based on certain conditions,i need to display the value for some of the days as Negative e.g. " - 45".Becasuse of this,I have declared the field for the "No of days" of the type "CHAR".
Now when i sort(using ALV grid SORT function) the list on basis of this column,it doesnt give me the correct o/p.
CAN anyone tell me how do i handle this?I want the list to be sorted correctly on basis of the "No of days" column.
\[removed by moderator\]
Edited by: Jan Stallkamp on Dec 17, 2008 6:32 PM

Hi,
Amit,
Apologies for violation of rule.
All,
For getting the negative sign in the front of the no,i.e. "-45",i had declared as CHAR.
Is there any way we can get the o/p in the form "-45" and not "45-" as well as use the SORT functionality?
BR,
SRM Tech

Similar Messages

  • ALV: How to sort multiple columns?

    Hi all,
    Good morning!
    I have a requirement to sort multiple columns in ALV. I did a search and tried with following codes:
    data: lo_config_alv  type ref to cl_salv_wd_config_table.
    lo_config_alv->if_salv_wd_table_settings~set_multi_column_sort( value = abap_true ).
    But I still can not sort for multiple columns.
    Please guide me how to do that.
    Thanks,
    Khanh

    Hello,
    If you want to sort ALV by multiple fields, then you have to create sort rule for each field and set sort position for each field to specify the sequence in which you want to sort multiple columns.
    Here is a sample code:
    * Sort rows by PRICE descending
      DATA: lr_field1 TYPE REF TO cl_salv_wd_field.
      DATA: lr_rule1 TYPE REF TO CL_SALV_WD_SORT_RULE.
      lr_field1 = lv_value->if_salv_wd_field_settings~get_field( 'PRICE' ).
      lr_field1->if_salv_wd_sort~create_sort_rule( EXPORTING sort_order = if_salv_wd_c_sort=>sort_order_descending
                                                   RECEIVING value = lr_rule1 ).
      lr_rule1->set_sort_position(  2 ). "set the sort position to 2
    * Sort rows by seatsmax descending
      DATA: lr_field2 TYPE REF TO cl_salv_wd_field.
      DATA: lr_rule2 TYPE REF TO CL_SALV_WD_SORT_RULE.
      lr_field2 = lv_value->if_salv_wd_field_settings~get_field( 'SEATSMAX' ).
      lr_field2->if_salv_wd_sort~create_sort_rule( EXPORTING sort_order = if_salv_wd_c_sort=>sort_order_descending
                                                              RECEIVING value = lr_rule2 ).
      lr_rule2->set_sort_position( 1 ). "set the sort position to 1
    * Sort rows by seatsocc descending
      DATA: lr_field TYPE REF TO cl_salv_wd_field.
      DATA: lr_rule3 TYPE REF TO CL_SALV_WD_SORT_RULE.
      lr_field = lv_value->if_salv_wd_field_settings~get_field( 'SEATSOCC' ).
      lr_field->if_salv_wd_sort~create_sort_rule( EXPORTING sort_order = if_salv_wd_c_sort=>sort_order_descending
      RECEIVING value = lr_rule3 ).
      lr_rule3->set_sort_position( 3 ). "set the sort position to 3
    In the above code, the sequence of sorting would be seatsmax price seatsocc
    If you dont specify the sort position, then the sequence of sorting would be the order in which the sort rules are created.
    In the above example, if we didnt set sort positions for the fields, then order would be price seatsmax seatsocc.
    Refer to this link for more info: https://cw.sdn.sap.com/cw/docs/DOC-33859
    Hope this helps!
    Regards,
    Srilatha

  • How to find the Column data type changes in table

    Hi All,
    I need to find out the column data type changes where made recently in table .
    How do i check past changes in column data type. Any data dictionary are there to find out the data type changes in the column .
    Thanks in advance..

    <FONT FACE="Arial" size=2 color="2D0000">
    You have the answer on hand (user_arguments / all_arguments)!
    SQL> desc user_arguments
    Name                                      Null?    Typ
    OBJECT_NAME      VARCHAR2(30)
    PACKAGE_NAME     VARCHAR2(30)
    OBJECT_ID     NOT NULL NUMBER
    OVERLOAD       VARCHAR2(40)
    ARGUMENT_NAME  VARCHAR2(30)
    POSITION       NOT NULL NUMBER
    SEQUENCE       NOT NULL NUMBER
    DATA_LEVEL     NOT NULL NUMBER
    DATA_TYPE      VARCHAR2(30) --> Data Type
    DEFAULT_VALUE  LONG
    DEFAULT_LENGTH NUMBER
    IN_OUT         VARCHAR2(9) -->Argument direction (IN,OUT,or IN/OUT)
    DATA_LENGTH    NUMBER
    DATA_PRECISION NUMBER
    DATA_SCALE     NUMBER
    RADIX          NUMBER
    CHARACTER_SET_NAME VARCHAR2(44)
    TYPE_OWNER         VARCHAR2(30)
    TYPE_NAME          VARCHAR2(30)
    TYPE_SUBNAME       VARCHAR2(30)
    TYPE_LINK          VARCHAR2(128)
    PLS_TYPE           VARCHAR2(30)
    CHAR_LENGTH        NUMBER
    CHAR_USED          VARCHAR2(1)
    Look for Data_Type where IN_OUT say OUT. That will be the data type retruned by that function.
    Edited :
    or POSITION in argument list,or null for function return value
    -SK
    </FONT>

  • How to Sort single column in webdynpro table

    Hi all
    I have requirement as follows.
    i have webdynpro table with the following columns like Date,firstname,lastname,address etc.
    now when i run the the application the table is populating the data at runtime that is fine.
    i need as soon as table is loaded , Date field in the table should be displayed the values in the decending order...i have the requirement as follows...
    how to sort the single column in table ...by default the values of the column displayed with decending order as soon as table displays at runtime....i dont want to click any button specific button to do the sort for that column
    Regards
    bindu

    Hi, I solved the same problem by modifying the sort() method in the default TableSorter class so that it takes a column id and direction rather than an event.
    I assume you have read the TableSorter tutorial.
    Like this. (This was done on nw ce 7.1 btw but may work on older versions as well.
    Oh and then you just call the sort method right after you have made the request
    //Code that goes into controller/view to execute sorting
    wdContext.currentContextElement().getPensionplanTableSorter().sort("MyColumnId", "Up", wdContext.nodePensionPlan());
    //Part of TableSorter.java
    //The original method that needs an event. Now it just calls the new method
    public void sort(IWDCustomEvent wdEvent, IWDNode dataSource) {
         // find the things we need
         String columnId = wdEvent.getString("selectedColumn");
         String direction = wdEvent.getString("sortDirection");
         sort(columnId, direction, dataSource);
    //This is the new method.
    public void sort(String columnId, String direction, IWDNode dataSource) {
         if (columnId == null || direction == null ) {
              return;
         IWDTableColumn column = (IWDTableColumn) table.getView().getElement(columnId);
         NodeElementByAttributeComparator elementComparator =
    (NodeElementByAttributeComparator) comparatorForColumn.get(column);
         if (elementComparator == null){
         //not a sortable column
              column.setSortState(WDTableColumnSortDirection.NOT_SORTABLE);
              return;
         // sorting
         elementComparator.setSortDirection(WDTableColumnSortDirection.valueOf(direction));
         dataSource.sortElements(elementComparator);

  • How to sort a column directly after data is filled into the grid?

    Hello,
    I have a unbound field X, which is filled on fly in the RowLoaded2 column. If I click on the column header, I am able to sort the column.
    I want to sort the column directly, but all attempts have failed.
    I have tried to call in <anchor>_OnUpdate
    <anchor>.bcol.Sort( "X", "ASC") but it does not work as long as the property is not mapped to a Segment field of a bdoc. For this test i just created my property X on the Business Objects behind the tablegrid
    I have used <tablegridcontrol>.sortCol = 2, but it results into a StackOverflowException even for any other column.
    Is there no way to sort the colum in this special kind of situation?
    Regards,
    Andreas

    Hi,
    you have to consider that when loading a tile for the first time always rowloaded2 is fired (several times) and afterwards onload. Maybe rowloaded2 again afterwards. So it should work to sort in onload.
    But when clicking the <back> button in the menue the order of the fired events might be different!
    Do you want to sort by an unbound column which is readonly or is it also editable (see other thread)? In this case things might be much more complicate... Normally another sorting should be done in onsave event but unfortunately you don't save anything as it is unbound...
    Regards,
    Wolfhard

  • How to Sort Multiple Column In ALV_LIST_DISPLAY

    Dear Experts,
                         Recently i've facing a problem to Sort multiple Column in ALV_LIST_DISPLAY.Whenever i need to sort 4 columns at a time , only 3 was sorted not the 4'th one.But i have already clearly mentioned in my sort section .Can anybody help me overcome this problem?
    warm regards,
    sameek mazumder.

    Hi samgpi,
    You should have no prolem with doing such sorting by using the parameter IT_SORT, available when using class or FM...
    Can you paste you sort section here so we can have a closer look?
    Kr,
    Manu.

  • How to Sort I variable of type VariableOneToOneMapping

    I am having a object mapping like this
    interface IUserName {
    public String getUserName();
    This method will be implemented by two class say A & B,Both the implementation looks like this
    class A implements IUserName {
    String name;
    public String getUserName() {
    return name;
    public void setUserName(String na) {
    name = nm;
    class c {
    ValueHolderInterface name= new ValueHolder();
    public IUserName getName(){
    return (IUserName ) name.getValue();
    Similarly the Class B also has the same implementation.The variable name in Cis mapped as VariableOneToOneMapping .i.e, name is mapped to Interface IUserName.
    Please let me know how to sort this expression name in the class C.
    I tried this
    ExpressionBuilder eb = new ExpressionBuilder()
    Expression exp = eb.get("name").get("name").ascending();
    ReadAllQuery ra = new ReadAllQuery(c.class);
    ra.setOrderByExpressions(exp);
    But I am getting the exception like this ----->
    (ERROR) Exception thrown while executing query. EXCEPTION [TOPLINK-6072] (TopLink - 9.0.3.5 (Build 436)): oracle.toplink.exceptions.QueryException EXCEPTION DESCRIPTION: Querying across a VariableOneToOneMapping is not supported.
    Please let me know how to overcome this issue.

    It is not possible to perform a joining query across a variable class 1:1 mapping. If you need this sort of querying I would recommend using a shared table between your interface implementers and inheritance. Then you can have a relationship to the root class and query on the shared attributes.
    Doug

  • How to change a field of type CHAR of a database table to DATS

    Dear ABAP experts,
    I have a database table: ZLT_aztnew with fields M1, M2, K1, K2, A1, A2, P1, P2, S2, D1, D2,  STD, BES. All these fields are of type 'Character'.  except D2 which is of type DATS. The field D1 is date and is in format DD.MM.YYYY.
    I want to convert this field D1 to type DATS so that I can use a date range through 'selection option' to select other  data of other fields (M1, M2, K1, K2, A1, A2, P1, P2, S2, D1, STD, BES.) related to field D1 from the database table Zlt_aztnew.
    How should I introduce this change (CONVERSION OF D1 CHAR to DATS in the .AZT file upload code itself.
    Problem: If I define D1 as Type  DATS in database table ZLT_AZTNEW then the UPLOAD fails.
    The AZT file upload code is:
    Data  it_string   type stringtab.
    Data  lv_string    type string.
    DATA:  itab  TYPE STANDARD TABLE OF zlt_aztnew.
    DATA:  wa_tab    TYPE zlt_aztnew.
    DATA: file_str1 type string.
    Data: it_tab TYPE STANDARD TABLE OF file_table,
            lw_file LIKE LINE OF it_tab,
            gd_subrc TYPE i.
    SELECTION-SCREEN begin of block blk with frame title text-100.
      SELECTION-SCREEN SKIP 2.
        parameters : p_file like rlgrap-filename .
    SELECTION-SCREEN end of block blk.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
    CALL METHOD cl_gui_frontend_services=>file_open_dialog
        EXPORTING
        window_title = 'Select only Text File'
        default_filename = '.azt'
        multiselection = 'X'
        CHANGING
        file_table = it_tab
        rc = gd_subrc.
    READ TABLE it_tab INTO lw_file INDEX 1.
       p_file = lw_file-FILENAME.
    Start-of-Selection.
      file_str1 = P_file.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        filename                      = file_str1
    *    filename                      = '\\10.10.1.92\Volume_1\_projekte\Zeiterfassung-SAP\test.azt'
      tables
        data_tab                      = it_string
    IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    LOOP AT it_string  INTO lv_string.
    clear wa_tab.
    SPLIT lv_string AT ';' INTO  wa_tab-M2   wa_tab-k2   wa_tab-A2   wa_tab-P2  wa_tab-S2   wa_tab-D1  wa_tab-STD  wa_tab-BES.
    Append wa_tab to itab.
    Write: sy-uline(120),
              / sy-vline,
                2 wa_tab-M2,
               11 sy-vline,
               13 wa_tab-k2,
               25 sy-vline,
               27 wa_tab-A2,
               32 sy-vline,
               34 wa_tab-P2,
               39 sy-vline,
               41 wa_tab-S2,
               46 sy-vline,
               48 wa_tab-D1,
               60 sy-vline,
               62 wa_tab-STD,
               72 sy-vline,
               74 wa_tab-BES,
              120 sy-vline.
    ENDLOOP.
    DATA: Answer.
    UPDATE zlt_aztnew From Table itab.
    * INSERT ZLT_aztnew From Table itab accepting duplicate keys.
    If sy-subrc NE 0.
    CALL FUNCTION 'POPUP_TO_CONFIRM'
      EXPORTING
       TITLEBAR                    = 'TITLE '
    *   DIAGNOSE_OBJECT             = ' '
        text_question               = 'Wollen Sie die vorhandenen Inhalte ändern'
       TEXT_BUTTON_1               = 'Ja'(001)
    *   ICON_BUTTON_1               = ' '
       TEXT_BUTTON_2               = 'Nein'(002)
    *   ICON_BUTTON_2               = ' '
       DEFAULT_BUTTON              = '1'
       DISPLAY_CANCEL_BUTTON       = 'X'
    *   USERDEFINED_F1_HELP         = ' '
    *   START_COLUMN                = 25
    *   START_ROW                   = 6
    *   POPUP_TYPE                  =
    *   IV_QUICKINFO_BUTTON_1       = ' '
    *   IV_QUICKINFO_BUTTON_2       = ' '
    IMPORTING
       answer                      = answer
    * TABLES
    *   PARAMETER                   =
    EXCEPTIONS
       TEXT_NOT_FOUND              = 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.
    IF Answer = '1'.
    WRITE: / 'Die vorhandenen Inhalte war geändernt'.
    MODIFY zlt_aztnew From Table itab.
    ENDIF.
    ENDIF.
    TO introduce a date range and pull data from the database table Zlt_AZTNEW--> I wrote the BELOW code SEPARATELY,
    but after execution, the error I am getting is: Enter a valid Date (for example, 31.03.2014).
    TABLES:   ZLT_aztnew.
    TYPES:  Begin OF ty_AZTN,
             M2   TYPE Zlt_AZTNEW-M2,
             K2   TYPE Zlt_AZTNEW-K2,
             A2   TYPE Zlt_AZTNEW-A2,
             P2   TYPE Zlt_AZTNEW-P2,
             S2   TYPE Zlt_AZTNEW-S2,
             D1   TYPE Zlt_AZTNEW-D1,
             STD  TYPE Zlt_AZTNEW-STD,
             BES  TYPE Zlt_AZTNEW-BES,
           END OF ty_AZTN.
    DATA:   gv_datum  TYPE d.
    DATA:   it_aztn TYPE STANDARD TABLE OF ty_aztn with  header line.
    CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
      EXPORTING
        date_external                  = zlt_aztnew-D1
    *   ACCEPT_INITIAL_DATE            =
    IMPORTING
       DATE_INTERNAL                  = gv_datum
    * EXCEPTIONS
    *   DATE_EXTERNAL_IS_INVALID       = 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.
           SELECT-OPTIONS: s_datum FOR gv_datum.
          INITIALIZATION.
            s_datum-low  = sy-datum.
            s_datum-high  = sy-datum.
            APPEND s_datum.
    ********** After this further code follows with "SELECT"  wherein I want to use the gv_datum as Where condition.
    SELECT   M2
                      K2
                      A2
                      P2
                      S2
                      D1
                      STD
                      BES
             FROM     ZLt_AZTNEW
             INTO     TABLE it_AZTN
             Where    D1 = gv_datum.
    Please provide me your valuable suggestion to correct any flaw in my code above.
    Looking forward for your reply.
    Best regards
    Chandan Kumar

    Dear Rama,
    Plz refer the following difference in naming conventions as compared to your suggestion:
    it_flat_file --> itab, (internal table for AZT fiel upload and split)
    ls_flat_file ---> wa_itab,
    Ztable --> Zlt_aztnew2,    (Dbase file)
    it_ztable ---> it_zlt_aztnew2, (internal table)
    ls_ztable --> wa_aztnew2,
    I wrote the following code but it is not working. Please also refer the attached screen shot of the database table : ZLT_AZTNEW2.
    Data  it_string   type stringtab.
    Data  lv_string   type string.
    DATA: file_str1 type string.
    Data: it_tab TYPE STANDARD TABLE OF file_table,
          lw_file LIKE LINE OF it_tab,
          gd_subrc TYPE i.
    TYPES: Begin of Ty_itab,
            M2  TYPE Char7,
            K2  TYPE Char3,
            A2  TYPE Char3,
            P2  TYPE Char3,
            S2  TYPE Char3,
            D1  TYPE Char8,
            STD TYPE Char8,
            BES TYPE Char80,
           END OF ty_itab.
    DATA: itab Type Standard Table of ty_itab,
          wa_itab Type ty_itab.
    DATA: it_zlt_aztnew2 type standard table of Zlt_aztnew2,
          wa_aztnew2     TYPE Zlt_aztnew2.
    SELECTION-SCREEN begin of block blk with frame title text-100.
      SELECTION-SCREEN SKIP 2.
        parameters : p_file like rlgrap-filename .
    SELECTION-SCREEN end of block blk.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
        EXPORTING
        window_title = 'Select only Text File'
        default_filename = '.azt'
        multiselection = 'X'
        CHANGING
        file_table = it_tab
        rc = gd_subrc.
      READ TABLE it_tab INTO lw_file INDEX 1.
      p_file = lw_file-FILENAME.
    Start-of-Selection.
      file_str1 = P_file.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        filename                      = file_str1
    *    filename                      = '\\10.10.1.92\Volume_1\_projekte\Zeiterfassung-SAP\test.azt'
      tables
        data_tab                      = it_string
    IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    LOOP AT it_string  INTO lv_string.
      Clear wa_itab.
      SPLIT lv_string AT ';' INTO  wa_itab-M2   wa_itab-k2   wa_itab-A2   wa_itab-P2  wa_itab-S2         wa_itab-D1  wa_itab-STD  wa_itab-BES.
      append wa_itab to itab.
      Write: sy-uline(120),
              / sy-vline,
                2 wa_itab-M2,
               11 sy-vline,
               13 wa_itab-k2,
               25 sy-vline,
               27 wa_itab-A2,
               32 sy-vline,
               34 wa_itab-P2,
               39 sy-vline,
               41 wa_itab-S2,
               46 sy-vline,
               48 wa_itab-D1,
               60 sy-vline,
               62 wa_itab-STD,
               72 sy-vline,
               74 wa_itab-BES,
              120 sy-vline.
    ENDLOOP.
    LOOP at itab into wa_itab.
      CLEAR wa_aztnew2.
      wa_aztnew2-D1+0(4) = wa_itab+6(4).
      wa_aztnew2-D1+4(2) = wa_itab+3(2).
      wa_aztnew2-D1+6(2) = wa_itab+0(2).
    Append wa_aztnew2 to it_zlt_aztnew2.
    ENDLOOP.
    MODIFY Zlt_aztnew2 from table it_zlt_aztnew2.
    Looking forward for your suggestiojn.
    Regards
    Chandan

  • ADF Faces - how to sort a column by sub-property ?

    hi,
    in a "af:table", this works fine :
    <af:column sortProperty="title" sortable="true">
    <f:facet name="header">
    <af:outputText value="Titre" />
    </f:facet>
    <af:outputText value="#{thisRowDoc.title}" />
    </af:column>
    but this doesn't :
    <af:column sortProperty="facility.libelle" sortable="true">
    <f:facet name="header">
    <af:outputText value="Service" />
    </f:facet>
    <af:outputText value="#{thisRowDoc.facility.libelle}" />
    </af:column>
    how can i sort on a property of a property ?
    thx !

    Hi,
    you have to consider that when loading a tile for the first time always rowloaded2 is fired (several times) and afterwards onload. Maybe rowloaded2 again afterwards. So it should work to sort in onload.
    But when clicking the <back> button in the menue the order of the fired events might be different!
    Do you want to sort by an unbound column which is readonly or is it also editable (see other thread)? In this case things might be much more complicate... Normally another sorting should be done in onsave event but unfortunately you don't save anything as it is unbound...
    Regards,
    Wolfhard

  • How to sort specific column when using GROUPING SETS in SQL Server?

    If I remember correctly, in SQL Server, it is not recommended to use "ORDER BY" when there's already a GROUP BY GROUPING SETS.
    I have two columns: [UPC#] & [Description] both are varchar.
    My grouping sets is like this:
    GROUP BY
    GROUPING SETS
    ([UPC],[Description])
    I don't have 'ORDER BY' but it's automatically sorting the Description column.
    If I added a 3rd column, sum(Qty), then it doesn't sort by Description anymore. But if I added
    ORDER BY [Description]
    then the grand total of sum(Qty) will be at the first row instead of the last.
    Is there a way to sort the Description column and still let the grand total of sum(Qty) be at the last row instead?
    Thanks.

    Yes, it works.
    Thank you.
    Could you kindly explain the logic?
    I don't quite understand the "= 3 THEN 1 ELSE 0" part.
    Is the #3 mean the column index 3?
    GROUPING_ID returns a bit mask value depending on number of columns grouped in the result 
    So when you do GROUPING_ID(([UPC]),([Description]))
    it has two columns UPC and Description so bit mask will be as follows
    0 ie 00 for rows grouped by both UPC and Description fields
    1 ie 01 for rows grouped by UPC ie UPC subtotals
    2 ie 10 for rows grouped by Description ie Description subtotals
    3 ie 11 for rows not grouped by both columns ie Grand total
    see
    http://msdn.microsoft.com/en-IN/library/bb510624.aspx
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs

  • How tu update a column having type 'Long raw' in oracle table with an image

    Hello,
    I must change the image loading in a column with 'long raw' type in the table. I find an image data already in the table.
    I have my new imgae in a file .bmp.
    What SQL instruction I mut use to update this column to load my new image ?
    I work in Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod.
    thanks for your helps.
    Regards.

    Unless I'm missing something MSFT are making it unecessarily complex by not implementing the SQL/XML standard...
    SQL> alter table emp add ( emp_xml xmltype)
      2  /
    Table altered.
    SQL> update emp set emp_xml = XMLELEMENT("EMPLOYEE",xmlattributes(EMPNO as "id"), XMLElement("Name",ENAME))
      2
    SQL> /
    14 rows updated.
    SQL> set pages 0
    SQL> select EMPNO, EMP_XML from EMP
      2  /
          7369
    <EMPLOYEE id="7369">
      <Name>SMITH</Name>
    </EMPLOYEE>
          7499
    <EMPLOYEE id="7499">
      <Name>ALLEN</Name>
    </EMPLOYEE>
          7521
    <EMPLOYEE id="7521">
      <Name>WARD</Name>
    </EMPLOYEE>
          7566
    <EMPLOYEE id="7566">
      <Name>JONES</Name>
    </EMPLOYEE>
          7654
    <EMPLOYEE id="7654">
      <Name>MARTIN</Name>
    </EMPLOYEE>
          7698
    <EMPLOYEE id="7698">
      <Name>BLAKE</Name>
    </EMPLOYEE>
          7782
    <EMPLOYEE id="7782">
      <Name>CLARK</Name>
    </EMPLOYEE>
          7788
    <EMPLOYEE id="7788">
      <Name>SCOTT</Name>
    </EMPLOYEE>
          7839
    <EMPLOYEE id="7839">
      <Name>KING</Name>
    </EMPLOYEE>
          7844
    <EMPLOYEE id="7844">
      <Name>TURNER</Name>
    </EMPLOYEE>
          7876
    <EMPLOYEE id="7876">
      <Name>ADAMS</Name>
    </EMPLOYEE>
          7900
    <EMPLOYEE id="7900">
      <Name>JAMES</Name>
    </EMPLOYEE>
          7902
    <EMPLOYEE id="7902">
      <Name>FORD</Name>
    </EMPLOYEE>
          7934
    <EMPLOYEE id="7934">
      <Name>MILLER</Name>
    </EMPLOYEE>
    14 rows selected.
    SQL>

  • Re: how to sort an array of type string

    thanks bina and turing pest. well i can't use collections.sort or arrays.sort i need to create a method to sort. stupid instructor dont want to take advantage of this good java language. anyways i am able to do the sort but now OMG the whole data is crappy. formatting is gone everything is fukedd up. excuse my language.
    public void getSort(String[] A)
              String temp= A[0];
                   for(int i=0; i<A.length; i++)
                   for (int j=0; j<A.length-1-i; j++)
                        if(A[j].compareTo(A[j+1])>0)
                             temp = A[j];
                             A[j] = A[j+1];
                             A[j+1] = temp;
         }and here is my output if i dont use the sort before it was not giving me an exception of arraysoutofbound and now it is
    Item          Number      Cost_unit     Sale_unit        TotalSale       profit          Totalprofit
    Binder          500             4       7               3300            1500            1500
    Bookbag         350             5       10              3300            1750            3250
    Calendar        300             3       8               2400            1500            4750
    Shirt           800             4       6               4600            1600            6350
    Notebook        400             1       2               800             400             6750
    Schedule        876             1       2               1752            876             7626and if i turn my sort function on this is what i getg
    Item          Number      Cost_unit     Sale_unit        TotalSale       profit          Totalprofit
    4       500             7       Binder                  3300            1500            1500
    10              350             5       Bookbag                 3300            1750            3250
    3       300             8       Calendar                2400            1500            4750
    4       6       800             Shirt                   4600            1600            6350
    1       2       400             Notebook                800             400             6750
    1       2       876             Schedule                1752            876             7626
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
            at BookStore.main(BookStore.java:62)at this line it is giving me an exception
    totalsale = test.totalSales(Integer.parseInt(str[1].trim()), Integer.parseInt(str[3].trim()));why is it all messed up?

    you create bean for your data like this
    class Person {
       private String name;
       private int age;
       public Person(String name, int age) {
          this.name = name;
          this.age = age;
       public String getName() {
          return name;
       public void setName(String name) {
          this.name = name;
       public int getAge() {
          return age;
       public void setAge(int age) {
          this.age = age;
       public String toString() {
          return "Name : " + name + "\n" + "Age : " + age;
    }after that, just sort it
    public class Sample {
       public static void main(String[] args) {
          Person[] array = new Person[3];
          array[0] = new Person("Dewi", 20);
          array[1] = new Person("Agus", 21);
          array[2] = new Person("Cindy", 18);
          sortByName(array);
          printOut(array);     
       private static void printOut(Person[] array) {
          for(Person person : array){
             System.out.println(person);
             System.out.println();
       private static void sortByName(Person[] array) {
          for (int i = 0; i < array.length; i++) {
             for (int j = array.length - 1; j > i; j--) {
                if (array[j].getName().compareTo(array[j - 1].getName()) < 0) {
                   Person temp = new Person(array[j].getName(), array[j].getAge());
                   array[j].setName(array[j - 1].getName());
                   array[j].setAge(array[j - 1].getAge());
                   array[j - 1].setName(temp.getName());
                   array[j - 1].setAge(temp.getAge());
    }

  • Sort - not columns - but rows in 3.01

    How to sort - not columns - but rows - in 3.01?

    Hi Sune,
    While we all wait for Apple to put this feature back in another update of Numbers 3, try this:
    You want to sort rows 11-14 (as an example). Add a Colour Fill to row 15 as a guide for later.
    Select rows 11-14. Click and *hold* on any Row Reference Tab. You will see the selected rows appear to 'lift'. Drag those rows away from Table 1 to a blank part of the 'canvas':
    and they will form a new table. Sort this table.
    Then select all rows of Table 2, and Copy.
    Click on Table 1. Select the colour filled row where you want to insert (row showing 23 Jun 2013 in this example).
    Menu > Insert > Copied Rows.
    Not as easy as Numbers 2.3 Reorganize Panel, but a workaround.
    If you frequently resort the same rows, consider placing them in their own table.
    Regards,
    Ian.

  • How not to sort datagrid column on double click

    Hello,
    I am currently building an application containing a datagrid for data representation. I've created a custom datagridheader in order to add a input text for filtering the columns (see code below).
    My goal is to hide the textinput, and then show it on a double click on the header. So i would like to know how to avoid the sort of this column each time i double click.?
    <?xml version="1.0" encoding="utf-8"?>
    <s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
                        xmlns:s="library://ns.adobe.com/flex/spark"
                        xmlns:mx="library://ns.adobe.com/flex/mx" resize="onColumnResize(event)" clipAndEnableScrolling="true" doubleClick="managefilterField(event)">
        <fx:Declarations>
            <!--- The default value of the <code>sortIndicator</code> property.
            It must be an IFactory for an IVisualElement.       
            <p>This value is specified in a <code>fx:Declaration</code> block and can be overridden
            by a declaration with <code>id="defaultSortIndicator"</code>
            in an MXML subclass.</p>
            @langversion 3.0
            @playerversion Flash 10
            @playerversion AIR 2.0
            @productversion Flex 4.5
            -->
            <fx:Component id="defaultSortIndicator">
                <s:Path data="M 3.5 7.0 L 0.0 0.0 L 7.0 0.0 L 3.5 7.0" implements="spark.components.gridClasses.IGridVisualElement">
                    <fx:Script>
                        <![CDATA[
                            import spark.components.DataGrid;
                            import spark.components.Grid;
                             *  @private
                            public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                                const dataGrid:DataGrid = grid.dataGrid;
                                if (!dataGrid)
                                    return;
                                const color:uint = dataGrid.getStyle("symbolColor");
                                arrowFill1.color = color;
                                arrowFill2.color = color;
                        ]]>
                    </fx:Script>
                    <s:fill>
                        <s:RadialGradient rotation="90" focalPointRatio="1">   
                            <!--- @private -->
                            <s:GradientEntry id="arrowFill1" color="0" alpha="0.6" />
                            <!--- @private -->
                            <s:GradientEntry id="arrowFill2" color="0" alpha="0.8" />
                        </s:RadialGradient>
                    </s:fill>
                </s:Path>
            </fx:Component>
            <!--- Displays the renderer's label property, which is set to the column's <code>headerText</code>.
            It must be an instance of a <code>TextBase</code>, like <code>s:Label</code>.
            <p>This visual element is added to the <code>labelDisplayGroup</code> by the renderer's
            <code>prepare()</code> method.   Any size/location constraints specified by the labelDisplay
            define its location relative to the labelDisplayGroup.</p>
            <p>This value is specified with a <code>fx:Declaration</code> and can be overridden
            by a declaration with <code>id="labelDisplay"</code>
            in an MXML subclass.</p>
            @langversion 3.0
            @playerversion Flash 10
            @playerversion AIR 2.0
            @productversion Flex 4.5
            -->
            <s:Label id="labelDisplay"
                     verticalCenter="1" left="0" right="0" top="0" bottom="0"
                     textAlign="start"
                     fontWeight="bold"
                     verticalAlign="middle"
                     maxDisplayedLines="1"
                     showTruncationTip="true" />
        </fx:Declarations>
        <fx:Script>
            <![CDATA[
                import net.awl.ismp.console.components.misc.FilterCriteria;
                import net.awl.ismp.console.events.ColumnFilteredEvent;
                import net.awl.ismp.console.events.ColumnResizedEvent;
                import mx.events.ResizeEvent;
                import spark.components.gridClasses.IGridVisualElement;
                import mx.core.IVisualElement;
                import spark.components.DataGrid;
                import spark.components.GridColumnHeaderGroup;
                import spark.components.gridClasses.GridColumn;
                import spark.primitives.supportClasses.GraphicElement;
                // chrome color constants and variables
                private static const DEFAULT_COLOR_VALUE:uint = 0xCC;
                private static const DEFAULT_COLOR:uint = 0xCCCCCC;
                private static const DEFAULT_SYMBOL_COLOR:uint = 0x000000;
                private static var colorTransform:ColorTransform = new ColorTransform();
                 *  @private
                private function dispatchChangeEvent(type:String):void
                    if (hasEventListener(type))
                        dispatchEvent(new Event(type));                   
                protected function onColumnResize(event:ResizeEvent):void
                    dispatchEvent(new ColumnResizedEvent(ColumnResizedEvent.COLUMNRESIZED_EVT,this.width,this.column.columnInde x));
                //  maxDisplayedLines
                private var _maxDisplayedLines:int = 1;
                [Bindable("maxDisplayedLinesChanged")]
                [Inspectable(minValue="-1")]
                 *  The value of this property is used to initialize the
                 *  <code>maxDisplayedLines</code> property of this renderer's
                 *  <code>labelDisplay</code> element.
                 *  @copy spark.components.supportClasses.TextBase#maxDisplayedLines
                 *  @default 1
                 *  @langversion 3.0
                 *  @playerversion Flash 10
                 *  @playerversion AIR 1.5
                 *  @productversion Flex 4.5
                public function get maxDisplayedLines():int
                    return _maxDisplayedLines;
                override protected function stateChanged(oldState:String, newState:String, recursive:Boolean):void
                    trace("state changed from : "+oldState+" to "+newState);
                    super.stateChanged(oldState, newState, recursive);
                 *  @private
                public function set maxDisplayedLines(value:int):void
                    if (value == _maxDisplayedLines)
                        return;
                    _maxDisplayedLines = value;
                    if (labelDisplay)
                        labelDisplay.maxDisplayedLines = value;
                    invalidateSize();
                    invalidateDisplayList();
                    dispatchChangeEvent("maxDisplayedLinesChanged");
                //  sortIndicator
                private var _sortIndicator:IFactory;
                private var sortIndicatorInstance:IVisualElement;
                [Bindable("sortIndicatorChanged")]
                 *  A visual element that's displayed when the column is sorted.
                 *  <p>The sortIndicator visual element is added to the <code>sortIndicatorGroup</code>
                 *  by this renderer's <code>prepare()</code> method.  Any size/location constraints
                 *  specified by the sortIndicator define its location relative to the sortIndicatorGroup.</p>
                 *  @default null
                 *  @langversion 3.0
                 *  @playerversion Flash 10
                 *  @playerversion AIR 1.5
                 *  @productversion Flex 4.5
                public function get sortIndicator():IFactory
                    return (_sortIndicator) ? _sortIndicator : defaultSortIndicator;
                 *  @private
                public function set sortIndicator(value:IFactory):void
                    trace("setSortIndicator");
                    if (_sortIndicator == value)
                        return;
                    _sortIndicator = value;
                    if (sortIndicatorInstance)
                        sortIndicatorGroup.includeInLayout = false;
                        sortIndicatorGroup.removeElement(sortIndicatorInstance);
                        sortIndicatorInstance = null;
                    invalidateDisplayList();
                    dispatchChangeEvent("sortIndicatorChanged");
                 *  @private
                 *  Create and add the sortIndicator to the sortIndicatorGroup and the
                 *  labelDisplay into the labelDisplayGroup.
                override public function prepare(hasBeenRecycled:Boolean):void
                    trace("prepare !!");
                    super.prepare(hasBeenRecycled);
                    if (labelDisplay && labelDisplayGroup && (labelDisplay.parent != labelDisplayGroup))
                        labelDisplayGroup.removeAllElements();
                        labelDisplayGroup.addElement(labelDisplay);
                    trace(sortIndicator);
                    trace("sortIndicatorInstance : "+sortIndicatorInstance);
                    const column:GridColumn = this.column;
                    if (sortIndicator && column && column.grid && column.grid.dataGrid && column.grid.dataGrid.columnHeaderGroup)
                        const dataGrid:DataGrid = column.grid.dataGrid;
                        const columnHeaderGroup:GridColumnHeaderGroup = dataGrid.columnHeaderGroup;
                        if (columnHeaderGroup.isSortIndicatorVisible(column.columnIndex))
                            if (!sortIndicatorInstance)
                                sortIndicatorInstance = sortIndicator.newInstance();
                                sortIndicatorGroup.addElement(sortIndicatorInstance);
                                chromeColorChanged = true;
                                invalidateDisplayList();
                            // Initialize sortIndicator
                            sortIndicatorInstance.visible = true;
                            const gridVisualElement:IGridVisualElement = sortIndicatorInstance as IGridVisualElement;
                            if (gridVisualElement)
                                gridVisualElement.prepareGridVisualElement(column.grid, -1, column.columnIndex);
                            sortIndicatorGroup.includeInLayout = true;
                            sortIndicatorGroup.scaleY = (column.sortDescending) ? 1 : -1;
                        else
                            if (sortIndicatorInstance)
                                sortIndicatorGroup.removeElement(sortIndicatorInstance);
                                sortIndicatorGroup.includeInLayout = false;
                                sortIndicatorInstance = null;
                private var chromeColorChanged:Boolean = false;
                private var colorized:Boolean = false;
                 *  @private
                 *  Apply chromeColor style.
                override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
                    //trace("update display list");
                    // Apply chrome color
                    if (chromeColorChanged)
                        var chromeColor:uint = getStyle("chromeColor");
                        if (chromeColor != DEFAULT_COLOR || colorized)
                            colorTransform.redOffset = ((chromeColor & (0xFF << 16)) >> 16) - DEFAULT_COLOR_VALUE;
                            colorTransform.greenOffset = ((chromeColor & (0xFF << 8)) >> 8) - DEFAULT_COLOR_VALUE;
                            colorTransform.blueOffset = (chromeColor & 0xFF) - DEFAULT_COLOR_VALUE;
                            colorTransform.alphaMultiplier = alpha;
                            transform.colorTransform = colorTransform;
                            var exclusions:Array = [labelDisplay, sortIndicatorInstance];
                            // Apply inverse colorizing to exclusions
                            if (exclusions && exclusions.length > 0)
                                colorTransform.redOffset = -colorTransform.redOffset;
                                colorTransform.greenOffset = -colorTransform.greenOffset;
                                colorTransform.blueOffset = -colorTransform.blueOffset;
                                for (var i:int = 0; i < exclusions.length; i++)
                                    var exclusionObject:Object = exclusions[i];
                                    if (exclusionObject &&
                                        (exclusionObject is DisplayObject ||
                                            exclusionObject is GraphicElement))
                                        colorTransform.alphaMultiplier = exclusionObject.alpha;
                                        exclusionObject.transform.colorTransform = colorTransform;
                            colorized = true;
                        chromeColorChanged = false;
                    super.updateDisplayList(unscaledWidth, unscaledHeight);
                 *  @private
                override public function styleChanged(styleProp:String):void
                    var allStyles:Boolean = !styleProp || styleProp == "styleName";
                    super.styleChanged(styleProp);
                    if (allStyles || styleProp == "chromeColor")
                        chromeColorChanged = true;
                        invalidateDisplayList();
                protected function managefilterField(event:MouseEvent):void
                    trace("double click sortIndicator : "+this.sortIndicatorInstance);
                    this.filterInput.visible=!this.filterInput.visible;
                    this.filterInput.includeInLayout=this.filterInput.visible;
                    this.filterSpacer.visible=this.filterInput.visible;
                    this.filterSpacer.includeInLayout=this.filterInput.visible;
                    if(!this.filterInput.visible)
                        this.filterInput.text="";
                        dispatchEvent(new ColumnFilteredEvent(ColumnFilteredEvent.COLUMNFILTERED_EVT,new FilterCriteria(this.column.dataField,this.filterInput.text)));
                    this.filterInput.setStyle("borderColor",0xFF6319);
                    this.filterInput.setStyle("focusColor",0xFF6319);
                    //this.filterInput.setStyle(
                protected function onTextInputSelection(event:MouseEvent):void
                    event.stopImmediatePropagation();
                    this.filterInput.setStyle("borderColor",0xFF6319);
                    this.filterInput.setStyle("focusColor",0xFF6319);
                protected function onKeyUp(event:KeyboardEvent):void
                    if(event.charCode==Keyboard.ENTER)
                        stage.focus=null;
                protected function onFocusOut(event:FocusEvent):void
                    this.filterInput.setStyle("borderColor",0x00ff00);
                    this.filterInput.setStyle("focusColor",0x70B2EE);
                    dispatchEvent(new ColumnFilteredEvent(ColumnFilteredEvent.COLUMNFILTERED_EVT,new FilterCriteria(this.column.dataField,this.filterInput.text)));
            ]]>
        </fx:Script>
        <s:states>
            <s:State name="normal" />
            <s:State name="hovered" />
            <s:State name="down" />
        </s:states>     
        <!-- layer 1: shadow -->
        <!--- @private -->
        <s:Rect id="shadow" left="-1" right="-1" top="-1" bottom="-1" radiusX="2">
            <s:fill>
                <s:LinearGradient rotation="90">
                    <s:GradientEntry color="0x000000"
                                     color.down="0xFFFFFF"
                                     alpha="0.01"
                                     alpha.down="0" />
                    <s:GradientEntry color="0x000000"
                                     color.down="0xFFFFFF"
                                     alpha="0.07"
                                     alpha.down="0.5" />
                </s:LinearGradient>
            </s:fill>
        </s:Rect>
        <!-- layer 2: fill -->
        <!--- @private -->
        <s:Rect id="fill" left="0" right="0" top="0" bottom="0">
            <s:fill>
                <s:LinearGradient rotation="90">
                    <s:GradientEntry color="0xFFFFFF"
                                     color.hovered="0xBBBDBD"
                                     color.down="0xAAAAAA"
                                     alpha="0.85" />
                    <s:GradientEntry color="0xD8D8D8"
                                     color.hovered="0x9FA0A1"
                                     color.down="0x929496"
                                     alpha="0.85" />
                </s:LinearGradient>
            </s:fill>
        </s:Rect>
        <!-- layer 3: fill lowlight -->
        <!--- @private -->
        <s:Rect id="lowlight" left="0" right="0" top="0" bottom="0">
            <s:fill>
                <s:LinearGradient rotation="270">
                    <s:GradientEntry color="0x000000" ratio="0.0" alpha="0.0627" />
                    <s:GradientEntry color="0x000000" ratio="0.48" alpha="0.0099" />
                    <s:GradientEntry color="0x000000" ratio="0.48001" alpha="0" />
                </s:LinearGradient>
            </s:fill>
        </s:Rect>
        <!-- layer 4: fill highlight -->
        <!--- @private -->
        <s:Rect id="highlight" left="0" right="0" top="0" bottom="0">
            <s:fill>
                <s:LinearGradient rotation="90">
                    <s:GradientEntry color="0xFFFFFF"
                                     ratio="0.0"
                                     alpha="0.33"
                                     alpha.hovered="0.22"
                                     alpha.down="0.12"/>
                    <s:GradientEntry color="0xFFFFFF"
                                     ratio="0.48"
                                     alpha="0.33"
                                     alpha.hovered="0.22"
                                     alpha.down="0.12" />
                    <s:GradientEntry color="0xFFFFFF"
                                     ratio="0.48001"
                                     alpha="0" />
                </s:LinearGradient>
            </s:fill>
        </s:Rect> 
        <!-- layer 5: highlight stroke (all states except down) -->
        <!--- @private -->
        <s:Rect id="highlightStroke" left="0" right="0" top="0" bottom="0" excludeFrom="down">
            <s:stroke>
                <s:LinearGradientStroke rotation="90" weight="1">
                    <s:GradientEntry color="0xFFFFFF" alpha.hovered="0.22" />
                    <s:GradientEntry color="0xD8D8D8" alpha.hovered="0.22" />
                </s:LinearGradientStroke>
            </s:stroke>
        </s:Rect>
        <!-- layer 6: highlight stroke (down state only) -->
        <!--- @private -->
        <s:Rect id="hldownstroke1" left="0" right="0" top="0" bottom="0" includeIn="down">
            <s:stroke>
                <s:LinearGradientStroke rotation="90" weight="1">
                    <s:GradientEntry color="0x000000" alpha="0.25" ratio="0.0" />
                    <s:GradientEntry color="0x000000" alpha="0.25" ratio="0.001" />
                    <s:GradientEntry color="0x000000" alpha="0.07" ratio="0.0011" />
                    <s:GradientEntry color="0x000000" alpha="0.07" ratio="0.965" />
                    <s:GradientEntry color="0x000000" alpha="0.00" ratio="0.9651" />
                </s:LinearGradientStroke>
            </s:stroke>
        </s:Rect>
        <!--- @private -->
        <s:Rect id="hldownstroke2" left="1" right="1" top="1" bottom="1" includeIn="down">
            <s:stroke>
                <s:LinearGradientStroke rotation="90" weight="1">
                    <s:GradientEntry color="0x000000" alpha="0.09" ratio="0.0" />
                    <s:GradientEntry color="0x000000" alpha="0.00" ratio="0.0001" />
                </s:LinearGradientStroke>
            </s:stroke>
        </s:Rect>
        <!--<s:Rect id="fill" left="0" right="0" top="0" bottom="0">
            <s:fill>
                <s:LinearGradient rotation="90">
                    <s:GradientEntry color.normal="0xf9f9f9" color.hovered="0xfcfdfa"
                                     color.down="0xdceac2" alpha="0.85" />
                    <s:GradientEntry color.normal="0xeaeaea" color.hovered="0xdceac2"
                                     color.down="0xd2e1b5" alpha="0.85" />
                </s:LinearGradient>
            </s:fill>
        </s:Rect>-->
        <!--<s:VGroup left="7" right="7" top="5" bottom="5" gap="6" verticalAlign="middle">
            <s:TextInput width="100%" />
            <s:HGroup width="100%">
                <s:Group id="labelDisplayGroup" width="100%" />
                <s:Group id="sortIndicatorGroup" includeInLayout="false" />
            </s:HGroup>
        </s:VGroup>-->
        <s:VGroup verticalAlign="middle" left="7" top="5" right="7" bottom="5" gap="2" >
            <s:TextInput id="filterInput" width="100%" visible="false" includeInLayout="false" keyUp="onKeyUp(event)" focusOut="onFocusOut(event)" click="onTextInputSelection(event)"/>
            <s:Spacer id="filterSpacer" visible="false" includeInLayout="false" height="5" />
        <s:HGroup width="100%" height="100%" verticalAlign="middle">
            <s:Group id="labelDisplayGroup" width="100%" />
            <s:Group id="sortIndicatorGroup" includeInLayout="false" />
        </s:HGroup>
        </s:VGroup>
    </s:GridItemRenderer>

    Based on your idea, i've intercepted the click event and I use stopImmediatePropagation.
    THen i added an image to sort the column. So if the image is clicked the sort is ok.

  • Wrong XML OraDbType code for database column type CHAR

    Hi there!
    I have a strange issue with the XML retrieved from an Oracle DB. I'm using OraDB11g and my problem is described next:
    When I create a table with a CHAR type columns and get the XML from a query the returns a cursor with the table rows, I get the supposed right OraDbType code 104:
    Table creation:
    create table AA_Table1
    ID number(2,0) not null,
    ColumnA         char(1)                    null,
    ColumnB         char(1)   default 'S'   not null,
    constraint PK_AA_Table1
    primary key ( ID )
    tablespace "X"
    storage
    compress for all operations
    and the returned XML:
    <?xml version="1.0" encoding="utf-16"?>
    <xs:schema id="o_ListaTable" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
    <xs:element name="o_ListTable" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    <xs:complexType>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="o_List" msprop:REFCursorName="REFCursor">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="ID" msprop:OraDbType="111" type="xs:short" minOccurs="0" />
    *<xs:element name="COLUMNA" msprop:OraDbType="104" type="xs:string" minOccurs="0" />*
    *<xs:element name="COLUMNB" msprop:OraDbType="104" type="xs:string" minOccurs="0" />*
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:choice>
    </xs:complexType>
    </xs:element>
    </xs:schema>
    BUT...when I insert another column on the table, changing it, after that, I get a wrong OraDBType code on the returned XML for the new added column...
    Added new column:
    alter table AA_Table1 add ColumnC char(1) default 'S' not null;
    The returned XML is:
    <?xml version="1.0" encoding="utf-16"?>
    <xs:schema id="o_ListaTable" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
    <xs:element name="o_ListTable" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    <xs:complexType>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="o_List" msprop:REFCursorName="REFCursor">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="ID" msprop:OraDbType="111" type="xs:short" minOccurs="0" />
    <xs:element name="COLUMNA" msprop:OraDbType="104" type="xs:string" minOccurs="0" />
    <xs:element name="COLUMNB" msprop:OraDbType="104" type="xs:string" minOccurs="0" />
    *<xs:element name="COLUMNC" msprop:OraDbType="126" type="xs:string" minOccurs="0" />*
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:choice>
    </xs:complexType>
    </xs:element>
    </xs:schema>
    My question is: why is this OraDbType code different? Check that the same column type CHAR(1) NOT NULL DEFAULT 'S' is created on table create and the OraDbType is ok, so I think this can be a bug...Because of this, I cannot do a right XML parser to convert CHAR(1) columns in other type I want, in this case, to convert it to .Net bool type. My parser now is ignoring the OraDbType code 126, because this is also the code used for nvarchar2, and I won't convert nvarchar2 to bool.
    How can I solve this problem?
    Some additional tests I've done:
    Have also inserted new columns nullable/not nullable and with default value:
    alter table AA_Table1 add ColumnD char(1);
    alter table AA_Table1 add ColumnE char(1) not null;
    alter table AA_Table1 add ColumnF char(1) default 'S';
    And the returned XML was:
    <?xml version="1.0" encoding="utf-16"?>
    <xs:schema id="o_ListTable" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
    <xs:element name="o_ListTable" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    <xs:complexType>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="o_Lista" msprop:REFCursorName="REFCursor">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="COLUMNA" msprop:OraDbType="104" type="xs:string" minOccurs="0" />
    <xs:element name="COLUMNB" msprop:OraDbType="104" type="xs:string" minOccurs="0" />
    <xs:element name="COLUMNC" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
    *<xs:element name="COLUMND" msprop:OraDbType="104" type="xs:string" minOccurs="0" />*
    *<xs:element name="COLUMNE" msprop:OraDbType="104" type="xs:string" minOccurs="0" />*
    *<xs:element name="COLUMNF" msprop:OraDbType="104" type="xs:string" minOccurs="0" />*
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:choice>
    </xs:complexType>
    </xs:element>
    </xs:schema>
    All OraDbTypes are right, except that one for the column not null and with default value. Any solution for this issue?
    If I change the type of the column that returns the wrong code (ColumnC) to CHAR(1) null default 'S' and then change it again to the original type CHAR(1) not null default 'S', I get the right ORaDbType code 104 as expcted and not the 126. This behaviour is strange - can this be an Oracle bug?
    I am using the following Oracle DLL and respective version:
    oci.dll (version 11.2.0.1)
    Oracle.DataAccess.dll (version 4.112.3.0)
    orannzsbb11.dll (version 11.0.0.1)
    oraocci11.dll (version 11.2.0.3)
    OraOps11w.dll (version 2.112.3.0)
    Edited by: 929091 on 23/Abr/2012 2:44

    Have you tried using minOccurs="1" ? Since the column is not null, it is guaranteed 1 value, correct?

Maybe you are looking for

  • New iPad mini retina but why can't I download pages and numbers for free?

    I have just bought an iPad mini retina and used my current itunes account to register on the iPad. I can see that the keynote that I bought before is free but not numbers and pages. Are they not suppose to be free when buying a new device?

  • Scale is acting weird

    Not actually sure if the title is the problem, however this is what I want to do and what is happening. I have video with blue screen applied and a second video running as the background. A point in the foreground video zooms in and I want to zoom th

  • Dynamic spool names

    Hi I want to spool output based on a column name from a select query. Based on another post, I wrote the script below, but it prompts be for a file name. I have tried moving the spool command to after the select statement, but it only seems to write

  • Hi, Can I use my CC Team account single app subscription to get indesign cs5?

    Hi, Can I use my CC Team account single app subscription to get indesign cs5? I puchased a single app subscription but realized I need an older version, can I deactivate my indesign 2015 and use my monthly subscription to install CS5?

  • HP Photosmart 6520 and Phtoshop Elements

    Using my HP Photosmart 6520 with Photoshop elements 10, colors on the printed photo are different from those shown on the monitor. Taking in account that: - the monitor is calibrated with ColorMunki Display; - PSE manages colors; - printer's color ma