Case insensitive parameter in odata service

Hi Experts,
How can i create XS OData URL as insensitive case while passing parameter or filter.
Thanks,
Shambhu Nath

Hi Christain,
I find one solution using toupper() function which convert lowercase to uppercase but it only working for single character e.g. UMSKZ eq toupper('f').
In other hand you can do it by creating custom filter function in the UI development. Can find example with sample source code, below URL:
AutoComplete - SAPUI5 Demo Kit
hope, It will help.
Thanks,
Shambhu Nath

Similar Messages

  • Passing input parameter to a oData service

    Hi,
        I am trying to develop a simple application using sapui5 and data comes from OData service. I am trying to  pass input parameter to OData service in sapui5 Application.
      how i do it ...
    please help me..............................

    I too have a such requirement, any help ?
    Thanks.

  • OData service

    Hi Sir,
    I am a new SAP Developer and i am able to access record form one table success using OData services but i don't know how access record form more than one table by Parameter using OData service.
    I a tried last couple of for solved this problem but till date i didn't get any proper solution some where i found with SQL script and using Calculation view but still getting some problem.
    Thanking you

    Hi Tobias,
    After adding the destination, to reflect it in Web IDE you have to refresh Web IDE.
    Given below is one of my gateway configuration (trial available through SCN). It might help you.
    Regards,Midhun
    SAP Technology RIG

  • How to expose odata service for input parameter based procedure.

    i have created one procedure in my schema.
    CREATE PROCEDURE TEST
    (in id varchar) AS
    BEGIN
    SELECT * FROM "table" WHERE "ID" = :id;
    END;
    and i am able to call the procedure from console.
    CALL "schema"."TEST"('1')
    my question is how to expose this procedure as odata service.
    is there any way to do it. ???

    hello Avinash. this is where i stuck in my code. i dont know how to wrap procedure in calculation view..
    My procedure code is below.
    create procedure "Get_User_for_Project"(in PROJECT_ID VARCHAR(255), out OUTPUT_TABLE "schema"."test_table")
    language SQLSCRIPT sql security definer  as
    BEGIN
    truncate table "schema"."test_table";
    OUTPUT_TABLE = SELECT "ID", "FIRST_NAME", "LAST_NAME" FROM "schema"."U_USER" WHERE "ID" IN (SELECT "USER_ID" FROM "schema"."U_USER_PROJECT" WHERE "PROJECT_ID" = :PROJECT_ID);
    END;
    my procedure is working fine. i just need help to wrap in calculation view with input parameter.

  • Error during connecting to the odata service of Employee

    Hi Everyone,
    When I am calling the employee odata service the following message is coming,
    and below error messages are coming in the console,
    2014-04-01 17:19:53 Device API logging initialized - DEVICE 2014-04-01 17:19:53 registerResourcePath ('', 'resources/') -  sap.ui.ModuleSystem 2014-04-01 17:19:53 URL prefixes set to: -  sap.ui.ModuleSystem 2014-04-01 17:19:53  (default) : resources/ -  sap.ui.ModuleSystem 2014-04-01 17:19:54 registerResourcePath ('employee_test', './employee_test/') -  sap.ui.ModuleSystem 2014-04-01 17:19:56 The following problem occurred: HTTP request failed400,Bad Request,
    SY/530Atleast one filter parameter is mandatoryBA93B9E3C3CCF1039D3100155D116802 -  2014-04-01 17:19:56 message: HTTP request failed Response Text:
    SY/530Atleast one filter parameter is mandatoryBA93B9E3C3CCF1039D3100155D116802 Status Code: 400 Status Text: Bad Request -  2014-04-01 17:19:56 The following problem occurred: HTTP request failed400,Bad Request,
    SY/530Atleast one filter parameter is mandatoryBA93B9E3C3CCF10E9D3100155D116802 -  2014-04-01 17:19:56 message: HTTP request failed Response Text:
    SY/530Atleast one filter parameter is mandatoryBA93B9E3C3CCF10E9D3100155D116802 Status Code: 400 Status Text: Bad Request -  2014-04-01 17:19:57 The following problem occurred: HTTP request failed400,Bad Request,
    SY/530Atleast one filter parameter is mandatoryBA93B9E3C3CCF1199D3100155D116802 -  2014-04-01 17:19:57 message: HTTP request failed Response Text:
    SY/530Atleast one filter parameter is mandatoryBA93B9E3C3CCF1199D3100155D116802 Status Code: 400 Status Text: Bad Request -
    And also when I am calling the entity set 'EmployeeCollection' of the odata service it is giving the below error,
    Kindly tell me, which will help me to cal the data of the EmployeeCollection entity set of the odata service. How I can connect to that odata with the help of the NetWeaver Gateway? And why this errors are coming? Do I need any authorization from our HR team of our company to connect to this odata service to retrieve data or the data should come automatically?
    Regards,
    Soumya

    To understand the error,
    1.go to developer console in chrome by pressing F12.
    2. Next go to network tab and refresh the application by pressing F5.
    3.In the network tab you will see an OData service call being fired to fetch  Employee collection data. 4.Right click on the call and open it in a new tab. There you can see the actual error message.
    From the error you have posted it looks like, the Entity collection expects atleast one filter condition to be passed while calling the collection. Calling the Entity collection without any filter is equivalent to 'SELECT *' without any WHERE clause. However in this case the particular service enforces a where clause by specifying a $filter option. If no $filter is supplier it raises an exception which you get here.

  • Case INSENSITIVE Columns on Oracle

    Hello Friends,
    Good Monday for everyone....
    I would like to ask you guys if there is a way to create a case INSENSITIVE Columns on Oracle. I used on Sqlserver before the COLLATE sintax, and I was able to make a columns (just that one) INSENSITIVE.
    I'm using oracle 10gr2 on Windows plataform and herte is my nls_parameters. My ideia is to search on this column without the need of performing a function UPPER and LOWER and etc...
    NLS_LANGUAGE BRAZILIAN PORTUGUESE
    NLS_TERRITORY BRAZIL
    NLS_CURRENCY Cr$
    NLS_ISO_CURRENCY BRAZIL
    NLS_NUMERIC_CHARACTERS ,.
    NLS_CALENDAR GREGORIAN
    NLS_DATE_FORMAT DD/MM/RR
    NLS_DATE_LANGUAGE BRAZILIAN PORTUGUESE
    NLS_CHARACTERSET WE8MSWIN1252
    NLS_SORT WEST_EUROPEAN
    NLS_TIME_FORMAT HH24:MI:SSXFF
    NLS_TIMESTAMP_FORMAT DD/MM/RR HH24:MI:SSXFF
    NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
    NLS_TIMESTAMP_TZ_FORMAT DD/MM/RR HH24:MI:SSXFF TZR
    NLS_DUAL_CURRENCY Cr$
    NLS_NCHAR_CHARACTERSET AL16UTF16
    NLS_COMP BINARY
    NLS_LENGTH_SEMANTICS BYTE
    NLS_NCHAR_CONV_EXCP FALSE
    tks a lot
    Keen

    APC wrote:
    No, they mean a setting which makes "APC" or "apc" match "Apc".
    There is nothing to be done on 10g, other than building a function based index on the column in question, so that any UPPER() searches are optimized.
    Well, as Kamran Agayev already noted CI is available in 10g too. It also worth mentioning FBI creates a hidden column. Also, your statement
    In 11g we have the option to set the NLS_SORT parameter so that any searches are case-insensitive (or indeed accent insensitive). Find out more.
    is incomplete. NLS_SORT affects nothing but sort:
    SQL> connect scott
    Enter password: *****
    Connected.
    SQL> select * from v$version
      2  /
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
    PL/SQL Release 10.2.0.4.0 - Production
    CORE    10.2.0.4.0      Production
    TNS for 32-bit Windows: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - Production
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  name
    10    from  t
    11    order by name
    12  /
    NAM
    Joe
    Max
    Sam
    joe
    max
    sam
    6 rows selected.
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  name
    10    from  t
    11    where name = 'max'
    12  /
    NAM
    max
    SQL> alter session set nls_sort = binary_ci
      2  /
    Session altered.
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  name
    10    from  t
    11    order by name
    12  /
    NAM
    Joe
    joe
    max
    Max
    Sam
    sam
    6 rows selected.
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  name
    10    from  t
    11    where name = 'max'
    12  /
    NAM
    max
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  name
    10    from  t
    11    where name like 'm%'
    12  /
    NAM
    max
    SQL> select 'Max' name from dual union
      2  select 'max' name from dual
      3  /
    NAM
    Max
    max
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  distinct name
    10    from  t
    11  /
    NAM
    sam
    Joe
    joe
    max
    Sam
    Max
    6 rows selected.
    SQL> As you can see, NLS_SORT alone works on sort but not on "searches". We also need to set NLS_COMP, which by default is BINARY. Prior to 10g R2 (I am not 100% sure, it could be prior 10g), the only NLS_COMP choice, besides BINARY, was ANSI. However, ANSI does not work with all comparison operators (e.g. does not work for LIKE, UNION, DISTINCT):
    SQL> alter session set nls_sort = binary_ci
      2  /
    Session altered.
    SQL> alter session set nls_comp=ansi
      2  /
    Session altered.
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  name
    10    from  t
    11    order by name
    12  /
    NAM
    Joe
    joe
    max
    Max
    Sam
    sam
    6 rows selected.
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  name
    10    from  t
    11    where name = 'max'
    12  /
    NAM
    Max
    max
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  name
    10    from  t
    11    where name like 'm%'
    12  /
    NAM
    max
    SQL> select 'Max' name from dual union
      2  select 'max' name from dual
      3  /
    NAM
    Max
    max
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  distinct name
    10    from  t
    11  /
    NAM
    sam
    Joe
    joe
    max
    Sam
    Max
    6 rows selected.
    SQL> Starting 10g R2 NLS_COMP can be set to LINGUISTIC, which will also work for LIKE and UNION but not for DISTINCT:
    SQL> alter session set nls_sort = binary_ci
      2  /
    Session altered.
    SQL> alter session set nls_comp=linguistic
      2  /
    Session altered.
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  name
    10    from  t
    11    order by name
    12  /
    NAM
    Joe
    joe
    max
    Max
    Sam
    sam
    6 rows selected.
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  name
    10    from  t
    11    where name = 'max'
    12  /
    NAM
    Max
    max
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  name
    10    from  t
    11    where name like 'm%'
    12  /
    NAM
    Max
    max
    SQL> select 'Max' name from dual union
      2  select 'max' name from dual
      3  /
    NAM
    Max
    SQL> with t as (
      2             select 'Max' name from dual union all
      3             select 'sam' name from dual union all
      4             select 'Joe' name from dual union all
      5             select 'max' name from dual union all
      6             select 'joe' name from dual union all
      7             select 'Sam' name from dual
      8            )
      9  select  distinct name
    10    from  t
    11  /
    NAM
    sam
    Joe
    joe
    max
    Sam
    Max
    6 rows selected.
    SQL> However even LINGUISTIC does not work with:
    • CLOB or NCLOB data types
    • Object data types
    • Table partitions
    • Index-organized tables
    SY.

  • Case sensitive and case insensitive Search

    Hi friends,
         Iam doing an Search RFC which will search records based on the search parameters provided at the portal side.
    One of the search parameter is a field with 40 character which holds the description(title) of the record.
    With this search paramter iam facing case sensitive problem.
    Example:
    Values in Database Table: ( Can be in any case)
           Record 1:  Sensitive
           Record 2:  SENSITIVE
           Record 3:  SensTive
           Record 4:  sensitive
           Record 5:  sensTive
         Input to RFC:  sens*
         Output: Getting only 4rth and 5th record but not all the records.
           The same is the case with the remaining search parameters(Like user name..).
           Is there any way of getting all the records when searching from the data base (with case insensitive).
           Kindly let me know if there is any possibility.
    Thanks in advance.
    Regards,
    Swarna Munukoti.

    Generally, no.  So, you'll either have to use EXEC SQL, or add more fields to the table.  You can do this using APPEND structures, which is the SAP approved way of adding fields.  If there are suitable user exits in the standard SAP code, then you'll be able to populate the additional fields there, as new records are created, or amended.
    Alternatively, create your own Z table with the same key as the standard table and a "search field" which contains the uppercase version of the field you're wanting to search.  You can either, again populate in suitable user exits, or, in worst case, have job that runs regularly populating your Z table.
    matt

  • Case insensitive search working in dev but not in prod

    Hello All,
    I had set the CASE_SENSITIVE_CHARACTER_COMPARISON parameter as OFF in NQSConfig.ini file for enabling the case insensitive search in OBIEE.
    This setup is letting me do the case insensitive search in Dev env but the same doesnt work in prod env. I tried pointing both prod and dev rpd to same prod db.
    With same db also, case insensitive search doesnt work in prod env.
    Any idea for which other configuration I can look for.
    Thanks in advance.

    Thanks Stijin. I had seen this post earlier. Case insensitive search works fine after setting the value for NLS_SORT and NLS_COMP in production RPD but the other report with distinct clause starts failing. Not sure about the reason.
    Saw this comment from you in that post:
    The only compromise solution we could find was to "cache" the column value we wanted to use in insensitive searches. These were mainly used in "show all choices" while setting prompts. Other than that there isn't much you can do in an Oracle database.
    Can you please tell me how to implement the above.

  • Case insensitive in-memory search

    I'm trying to create a case-insensitive in-memory search on a ViewObject. I'm using the following code for performing an in-memory search (~ filtering already retrieved rows from the ViewObject which is based on a webservice)
    ViewObject vo = service.getMyViewObject();
    vo.setQueryMode(ViewObject.QUERY_MODE_SCAN_VIEW_ROWS);
    ViewCriteria vc = vo.createViewCriteria();
    vc.setCriteriaMode(ViewCriteria.CRITERIA_MODE_CACHE);
    ViewCriteriaRow vcr = vc.createViewCriteriaRow();
    vcr.setAttribute("MyAttribute", "like 'abc%' ");
    vc.add(vcr);
    vo.applyViewCriteria(vc);
    vo.executeQuery();This all works well .. but when I add vcr.setUpperColumns(true); and change line vcr.setAttribute("MyAttribute", "like 'abc%' "); into vcr.setAttribute("MyAttribute", "like 'ABC%' ");I get the following exception :
    Caused by: oracle.jbo.expr.JIException: Method call has no object context
         at oracle.jbo.expr.JIParserMethodNode.evaluate(JIParserMethodNode.java:71)
         at oracle.jbo.expr.JIParserNode.evaluate(JIParserNode.java:740)
         at oracle.jbo.RowMatch.rowQualifies(RowMatch.java:230)
         at oracle.jbo.server.ViewObjectImpl.rowQualifies(ViewObjectImpl.java:1387)
         at oracle.jbo.server.QueryCollection.rowQualifies(QueryCollection.java:2308)
         at oracle.jbo.server.QueryCollection.removeUnqualifiedRows(QueryCollection.java:549)
         at oracle.jbo.server.QueryCollection.buildResultSet(QueryCollection.java:719)
         at oracle.jbo.server.QueryCollection.executeQuery(QueryCollection.java:666)
         at oracle.jbo.server.ViewObjectImpl.executeQueryForCollection(ViewObjectImpl.java:3655)So, my question is: is it possible to do a case-insensitive in-memory search or should I convince my customer to drop the feature-request ;-)

    Maybe I should add some extra info:
    The viewobject is based on a webservice and not a database. I do not have access to the implementation of that webservice ( I only consume its data and store the results in the viewobject's datacollection ). The VO has no query attached and only has transient attributes. Therefore, I cannot use vo.setWhereClause() ~ I think.
    Once I filled the viewobject's datacollection ( by overriding executeQueryForCollection() and createRowFromResultSet(...) ), I would like to filter the datacollection with filterparameters (from my jsf page). This can be enabled by first calling vo.setQueryMode(ViewObject.QUERY_MODE_SCAN_VIEW_ROWS) an
    The in-memory search facility in the ViewObject's implementation seems to be restricted in filtering the viewobject's datacollection.
    I've tried using ViewCriteria and RowMatch to filter the data ... with no success.
    I hope I have explained my situation a bit more. Perhaps someone can help me out ?

  • Binding to Odata Service with Input Parameters from HANA

    Hello,
    I'm developing a UI5 application that consumes a SAP HANA OData service to search a database (using fuzzy search). This service receives an Input Parameter, used to query the database.
    So every time the user searches for something I build a new binding path and refresh the model to show the search results in the sap.m.List.
    The Model:
    var hanaModel =  new sap.ui.model.odata.ODataModel("…/services/seed.xsodata");
    this.setModel(hanaModel);
    The search event handler from sap.m.SearchField:
    var listBinding = this.getView().byId("list").getBinding("items");
    listBinding.sPath = "/FoodstuffByNameValuesParameters(P_NAME='" + searchString + "')/Results";
    this.getView().getModel().refresh();
    My question is if this is the correct approach to create the model and bind the list when we have a service with an Input Parameter, or if there is a better way to do it.
    (This approach is actually working).
    Regards,
    Paulo

    i would do
    var       filter = [];
    var selectFilter = new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.Contains, sVal);
          filter.push(selectFilter);
    listBinding .filter(filter);

  • Use of wildcard and case insensitive searches

    Used the "Create form from a table" option. Have a customized form for this table to query, insert, update, and delete rows. My question is how can I allow a user to 1) search using a wildcard (%) from this form and 2) how can I make the search case insensitive for my users.
    Thanks

    Hi,
    Why not create a report to find the records and link to the form from the report.
    You can then set the where clause to be whatever you wish:
    where tablename.columnname like :parameter
    or even:
    where UPPER(tablename.columnname) like UPPER(:parameter)
    Regards Michael

  • Blank padding in case of nchar columns while case insensitive comparison

    hi
    i have my database on oracle 9i .
    i want case insensitive behaviour so i set nls_comp=ANSi and nls_sort to GENERIC_BASELETTER.
    all columns of type character are nchar in my database.
    but when i execute a query having a where condition on nchar column blanks are not padded and there is no result ( documentation says lanks are padded while comparisons)..
    for e.g select * from area where code='bom' does not return result.
    i need to do select * from area where rtrim(code) = 'bom'. (note code is of length nchar(10))
    please suggest if here is any solutions for this.

    It's always helpful when you have problems if you can provide a concrete example of those problems. For example can you provide something like the following the exhibits the problem?
    SQL> SELECT * FROM V$VERSION;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
    PL/SQL Release 10.2.0.4.0 - Production
    CORE    10.2.0.4.0      Production
    TNS for 64-bit Windows: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - Production
    SQL> CREATE TABLE AREA(CODE NCHAR(10));
    Table created.
    SQL> INSERT INTO AREA VALUES ('bom       ');
    1 row created.
    SQL> SELECT * FROM AREA WHERE CODE = 'bom';
    CODE
    bom
    SQL> SHOW PARAMETER NLS_COMP
    NAME                                 TYPE        VALUE
    nls_comp                             string
    SQL> SHOW PARAMETER NLS_SORT
    NAME                                 TYPE        VALUE
    nls_sort                             string
    SQL> ALTER SESSION SET NLS_COMP=ANSI;
    Session altered.
    SQL> ALTER SESSION SET NLS_SORT=GENERIC_BASELETTER;
    Session altered.
    SQL> SELECT * FROM AREA WHERE CODE = 'bom';
    CODE
    bom

  • How to use Alias name in OData service in SAP HANA

    Hi,
         I need to change one column name with alias of another name in odata service definition or odata url running in rest client. I am trying to give alias name with as key in the service definition like sql query.
    ex:
    There is one table with column name of PRODUCT_ID. I exporting that table via odata service to SAP UI. In the UI i dont want the product id column as PRODUCT_ID. It should be ike "Prodcut". Like we are using in SQL example
    select "PRODUCT_ID" as "Product" from "producttab";
    But i can't use as key for alias name. So i am getting syntax error.
    I have tried in rest client also ie executing odata file in rest based service. But i got error only.
    If anyone knows about this alias name in odata service, Please help me to resolve this issue..

    Hi Thomas
         Thanks for your reply.
         Actually in odata service definition i am using attribute and calculation views only. But in some case from the model view itself i need to use some alias names to the UI through odata service.
         For example in attribute view i have some columns with name col1,col2... I am getting those columns in UI using  odata service, for particular col2 column i need to change column name as product. And i am using the same view as source of another odata service in that service i need to change that column name as productname.
         In that case i need alias name usage. So that only i am searching alias keyword in odata service.
         Is there any possibility to use alias names in odata service.

  • Case insensitive selects with 'like'

    I use a 10g database (10.2.0.2 same behaviour with 10.2.0.1). What we want is case insensitive selects with 'like' operator in the where clause. NLS_COMP is set to 'LINGUISTIC' and NLS_SORT is set to 'BINARY_CI.
    In a table we have two columns one of type 'varchar2' one of type 'nvarchar2'. The databases national character set is set to UTF8. Case insensitive sorting works with both columns. Select statements with '.... where varchar2col like '%r%' returns also values with upper case 'R' values (that is what I expect).
    The select statements with '.... where nvarchar2col like '%r%' however does not return the row with upper case 'R' values.
    I used SQL*Plus: Release 10.2.0.3.0 and other clients and the behaviour is the same so
    I think it is not client related.
    Is that a known issue or is there any other parameter to set for UTF8 nvarchar columns?
    Any hint is very much appreciated! Here are the nls settings in database, instance and session:
    DPARAMETER      DVALUE IVALUE SVALUE
    NLS_CHARACTERSET WE8ISO8859P1
    NLS_COMP      BINARY LINGUISTIC LINGUISTIC
    NLS_LANGUAGE      AMERICAN AMERICAN AMERICAN
    NLS_NCHAR_CHARACTERSET UTF8
    NLS_RDBMS_VERSION 10.2.0.1.0
    NLS_SORT BINARY BINARY_CI BINARY_CI
    NLS_TERRITORY      AMERICA AMERICA AMERICA

    OK. Found out what the problem is. It is obviously the client.
    While using the instant client and setting the parameters (NLS_SORT=BINARY_CI and NLS_COMP=LINGUISTIC) as environment variables does not work correctly, at least not for nvarchar2 fields. The nls_session_parameters show the correct values, but selects with 'like' operators in the where clause do not return case insensitive. Issuing the 'alter session' commands and again setting the nls parameters solves the problem.
    Using the full client installation also works, in case the parameters are set in the registry on windows systems. With the full client it it not necessary to issue the 'alter session' commands again.
    So obviously the problem is instant client and nvarchar2 field related. That's too bad....

  • How to get nested JSON structure from OData service result

    Hi all,
    This is what I have done :
    I have developed OData service where I am following below steps :
    1. Created Stored procedure for the logic
    2. Created scripted calculation view and call stored procedure from the view.
    3. Created OData Service where I am calling calculation view with multiple parameters.
    Every thing is working fine and I am getting proper JSON Result which all the attributes that I am returning from the view in flatten structure.
    Additional requirement:
    On top of this I have additional requirement where I want to get various aggregation or counts.
    For example : from view I am getting all the customers result as result set and I also want some summary level information along with that such as :
    1. Total Number of Records
    2. Total VIP Customers
    3. Total Individual Customers
    4. Total Business Customers
    Above counts can not be each records level information so I need this details in my OData Service result as separate summary section like nested JSON structure.
    For example :
    d: {
    results: [
    __metadata: {
    uri: "http://servername:8000/testmulti.xsodata/calmultiview1('123456')",
    type: "Cust.Multiview1.calmultiview1Type"
    aggregation: {
    totalrecords: "",
    totalVIPCustomers: "",
    totalIndividualCustomers:"",
    totalbusinesscutomers:""
    ID: "123456",
    ENT_ID: 1234,
    FIRST_NM: "ABC",
    LAST_NM: "XYZ",
    CITY: "DELHI",
    In above example like _metadata , I am asking how to get aggregation section also in the JSON result?
    aggregation: {
    totalrecords: "",
    totalVIPCustomers: "",
    totalIndividualCustomers:"",
    totalbusinesscutomers:""
    Please suggest best possible way to implement this kind of requirements.
    Thanks
    - Dharmesh

    Don't expect that OData can help you for this. Still you can try the following.
    Create a XSJS service where you can execute your procedure manually and get the aggregation as well. From the XSJS , you can loop over the result sets and build your corresponding JSON format. But, you can not implement the features of OData, as the return would be "just" a JSON.
    in any way you can establish an association with your main entity and aggregation entity(I am Sure, the worst case), you can get both in the same payload.
    Sreehari

Maybe you are looking for