Query re: breakIterator getWordInstance() function

Hi all,
I am a bit of a newbie but have managed to write a small, simple program that takes text entered by the user in several jtextfields and formats in front of their eyes (!) in a jtextpane above the jtextfields following their clicking on a button on the bottom of the screen. The problem I have is that getWordInstance() treats 'www.url.separated.by.full.stops.so.long.that.it.messes.up.all.my.hard.formatting.work.' as a single word, which results in unsightly formatting - e.g.:
Several lines of neatly formatted work. Several lines of neatly formatted work.
___Several lines of neatly formatted work. Several lines of neatly formatted work.
___Several lines of neatly formatted work. Several lines of neatly formatted work.
___Several lines of neatly formatted work. Several lines of neatly formatted work.
___Several lines of neatly formatted work. http://
___www.url.too.long.to.fit.on.above.line.so.new.line.starts. Several lines of neatly
___formatted work. Several lines of neatly formatted work. Several lines of neatly
___formatted work.
I am using SwingUtilities.computeStringWidth(Fontmetrics, String) to insert line breaks at appropriate places, but need help to understand how to break the url up into smaller words. Have gone slightly mad spending hours on trying to split() the url up etc and am at dead end. Bear in mind that I scraped through the SCJP exam with 61% (lol!), and you'll understand that these ideas don't come easy to me!
Cheers in advance
Chris L
Edited by: 833758 on 03-Feb-2011 17:36

Hi Martin,
One easy way of solving is to include the WAD command TRANSFER_STATE at the end of all the Planning function / Sequence commands attached to the Button.
This will refresh the WAD layout without having to reenter the variable values if any.
The other Option is to reset all the variables associated with the execution of Planning function after every execution.
This can be included under Web template Properties so this happens after every refresh of the layout.
Hope this helps.
Regards.
Shafi.

Similar Messages

  • Problem in Adhoc Query's set operation functionality.

    Hi Experts,
    I am facing problem executing Adhoc Query's set operation functionality.
    In Selection Tab, following operations are performed :-
    Execute a query and mark it as 'Set A'.(Say Hit list = X)
    Execute another query and mark it as 'Set B'.(Say Hit list = Y)
    In Set operation Tab, following operations are performed :-:-
    Carry out an Operations 'Set A minus Set B'.
    which results in Resulting Set = Z.
    Transfer the resulting set 'in hit list' and press the copy resulting set button.
    In Selection Tab, Hit list is populated with Z.
    And when output button is pressed, I get to see 'Y' list and not 'Z' list.
    Kindly help.
    Thanks.
    Yogesh

    Hi Experts,
    I am facing problem executing Adhoc Query's set operation functionality.
    In Selection Tab, following operations are performed :-
    Execute a query and mark it as 'Set A'.(Say Hit list = X)
    Execute another query and mark it as 'Set B'.(Say Hit list = Y)
    In Set operation Tab, following operations are performed :-:-
    Carry out an Operations 'Set A minus Set B'.
    which results in Resulting Set = Z.
    Transfer the resulting set 'in hit list' and press the copy resulting set button.
    In Selection Tab, Hit list is populated with Z.
    And when output button is pressed, I get to see 'Y' list and not 'Z' list.
    Kindly help.
    Thanks.
    Yogesh

  • I want single update query without use the function.

    I want to update sells_table selling_code field with max date product_code from product table.
    In product table there is multiple product_code date wise.
    I have been done it with below quey with the use of function but can we do it in only one update query
    without use the function.
    UPDATE sells_table
    SET selling_code = MAXDATEPRODUCT(ctd_vpk_product_code)
    WHERE NVL(update_product_flag,0) = 0 ;
    CREATE OR REPLACE FUNCTION HVL.maxdateproduct (p_product IN VARCHAR2) RETURN NUMBER
    IS
    max_date_product VARCHAR2 (100);
    BEGIN
    BEGIN
    SELECT NVL (TRIM (product_code), 0)
    INTO max_date_product
    FROM (SELECT product_code, xref_end_dt
    FROM product
    WHERE TO_NUMBER (p_product) = pr.item_id
    ORDER BY xref_end_dt DESC)
    WHERE ROWNUM = 1; -- It will return only one row - max date product code
    EXCEPTION
    WHEN OTHERS
    THEN
    RETURN 0;
    END;
    RETURN max_date_product;
    END maxdateproduct;
    Thanks in Advance.

    Hi,
    Something like this.
    update setlls_table st
            set selling_code =(select nvl(trim(product_code)) from 
                                  (select product_code
                                          , rank() over (partition by item_id order by xref_end_dt DESC) rn
                                       from product
                                   ) pr
                                   where rn =1
                                         and pr.item_id = st.ctd_vpk_product_code
                               ) where NVL(update_product_flag,0) = 0 ;As such not tested due to lack of input sample.
    Regards
    Anurag Tibrewal.

  • Query for getting all function and procedure inside the packages

    hi All
    Please provide me Query for getting all function and procedure inside the packages
    thanks

    As Todd said, you can use user_arguments data dictionary or you can join user_objects and user_procedures like below to get the name of the packaged function and procedure names.
    If you are looking for the packaged procedures and functions source then use user_source data dictionary
    select a.object_name,a.procedure_name from user_procedures a,
                  user_objects b
    where a.object_name is not null
    and a.procedure_name is not null
    and b.object_type='PACKAGE'        
    and a.object_name=b.object_name

  • How to write SQL query and apply aggregate functions on it

    Hello experts,
    Iu2019ve a task to write SQL query on tree tables and do inner join on them. Iu2019ve accomplish this task by using T-CODE SQVI. However now I need to write a query and apply SQL functions on it i.e. Add, Count, Max and Min etc. Please can someone tell me how I can write SQL query with aggregate functions in SAP?
    Thanks a lot in advance

    HI Mr. Cool
    you can see the below code for using aggregate functions.
    where ARTIST and SEATSOCCU are the field names for which you want to perform these functions.
    DATA: TOTAL_ENTRIES TYPE I,
          TOTAL_ATT TYPE I,
          MAX_ATT TYPE I,
          AVG_ATT TYPE I.
    SELECT COUNT( DISTINCT ARTIST )
           SUM( SEATSOCCU )
           MAX( SEATSOCCU )
           AVG( SEATSOCCU ) FROM YCONCERT INTO (TOTAL_ENTRIES, TOTAL_ATT,
    MAX_ATT, AVG_ATT).
    Thanks
    Lalit Gupta

  • VO query with SQL table function (MS SQL) and update of parameter value

    Hello All,
    I use VO where Query is the SQL function that returns a table (MS SQL Server):
    select * from getData('XXXX')
    where ‘ХХХХ’ should be binded to the specific ID (e.g. selected row in the tree view on the another facet).
    More details: I have two facets. Left facet contains a tree view that displays the list of the projects grouped by industry. Right facet contains a pivot table (source query is a ‘table function’ from above).
    I want to have the pivot table (right facet) to be updated with the data specific to the project (selected row in the tree).
    I know about the possibility to dynamically update the where clause (setNamedWhereClauseParam method), but in my case there is no ‘where’ clause. Is there any kind of ‘bind variable’ to be used to refresh the data?
    Any guidance, ideas, examples are greatly welcome.
    With best wishes,
    Anatol

    Are the columns that are being selected different each time or the same?
    If they are the same then you don't need to do any additional binding - the pivot table is connected to the VO at design time and it wouldn't care if the underlying from/where have changed.
    If on the other hand your columns change (but the number of them stay the same) then use aliases for the initial definition (select ename a, id b, salary c) and then when you change the VO change the mapping but keep the names (select dname a, moo b, foo c).
    If the whole query is changing and you don't know in advance the structure - then there is no out of the box solution with a pivot table - you'll need to code a backing bean that will provide the data model to the pivot table based on your query.

  • How to create a Type Object with Dynamic select query columns in a Function

    Hi Every One,
    I'm trying to figure out how to write a piplined function that executes a dynamic select query and construct a Type Object in order to assigned it to the pipe row.
    I have tried by
    SELECT a.DB_QUERY INTO actual_query FROM mytable a WHERE a.country_code = 'US';
    c :=DBMS_SQL.OPEN_CURSOR;
    DBMS_SQL.PARSE(c,actual_query,DBMS_SQL.NATIVE);
    l_status := DBMS_SQL.EXECUTE(c);
    DBMS_SQL.DESCRIBE_COLUMNS(c, col_cnt, rec_tab);
    FOR j in 1..col_cnt LOOP
    DBMS_SQL.DEFINE_COLUMN(c,j,v_val,2000);
    END LOOP;
    FOR j in 1..col_cnt LOOP
    DBMS_SQL.COLUMN_VALUE(c,j,v_val);
    END LOOP;
    But got stuck, how to iterate the values and assign to a Type Object from the cursor. Can any one guide me how to do the process.
    Thanks,
    mallikj2

    Hi Justin,
    First of thanks for your reply, and coming to my requirement, I need to report the list of items which are there in the dynamic select statement what am getting from the DB. The select statement number of columns may vary in my example for different countries the select item columns count is different. For US its '15', for UK it may be 10 ...like so, and some of the column value might be a combination or calculation part of other table columns (The select query contains more than one table in the from clause).
    In order to execute the dynamic select statement and return the result i choose to write a function which will parse the cursor for dynamic query and then iterate the values and construct a Type Object and append it to the pipe row.
    Am relatively very new for these sort of things, welcome in case of any suggestions to make it simple (Instead of the function what i thought to work with) also a sample narrating the new procedure will be appreciated.
    Thanks in Advance,
    mallikj2.

  • Query with scalar valued function with date filter

    Hello experts
    i have a problem by filtering my results with the date
    i have written the following code
    SELECT
    T1.ItemCode
    , T1.Dscription
    ,DBO.F_CALCULATION_QUANTITY(T1.ITEMCODE)
    FROM OINV T0 
    INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry
    INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode
    INNER JOIN OSLP T3 ON T0.SLPCODE=T3.SLPCODE
    WHERE
    (T0.DOCDATE BETWEEN '2010-11-01' AND '2010-11-30')
    and (t2.cardcode ='80022')
    and (T0.CANCELED= 'N')
    group by  t1.itemcode, T1.Dscription, t2.suppcatnum
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    ALTER  FUNCTION [dbo].[F_CALCULATION_QUANTITY]
    (@ITEMCODE AS NVARCHAR(10))
    RETURNS
    NUMERIC(19,2)
    AS
    BEGIN
    DECLARE
    @RESULT1 AS NUMERIC(19,2),
    @RESULT2 AS NUMERIC(19,2),
    @RESULT AS NUMERIC(19,2)
    SELECT @RESULT1=SUM(A.QUANTITY)
    FROM INV1 A
    JOIN OINV B ON A.DOCENTRY=B.DOCENTRY
    WHERE A.ITEMCODE=@ITEMCODE
    AND B.DOCDATE BETWEEN  '2010-11-01 00:00:00.000' AND '2010-11-30 00:00:00.000'
    SELECT @RESULT2=SUM(A.QUANTITY)
    FROM RIN1 A
    JOIN ORIN B ON A.DOCENTRY=B.DOCENTRY
    WHERE A.ITEMCODE=@ITEMCODE
    AND B.DOCDATE BETWEEN '2010-11-01 00:00:00.000' AND '2010-11-30 00:00:00.000'
    SELECT @RESULT=ISNULL(@RESULT1,0)-ISNULL(@RESULT2,0)
    --SELECT @RESULT=@RESULT1- @RESULT2
    RETURN @RESULT
    END
    the problem i have is that i want to filter my results accoring to the date provided by the user. i want it to be dynamic query.
    by now, what i do is to edit the docdate in the function in order to get the desired results. this is not what i want.
    could you please help me on this way in order to let the user to input the date?if i add the [%] in the query, it does not bring me the right results

    i have already edited the function to
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    ALTER  FUNCTION [dbo].[F_CALCULATION_QUANTITY]
    (@ITEMCODE AS NVARCHAR(10),
    @STARTDATE1 as DATETIME,
    @ENDDATE1 AS DATETIME
    RETURNS
    NUMERIC(19,2)
    AS
    BEGIN
    DECLARE
    @RESULT1 AS NUMERIC(19,2),
    @RESULT2 AS NUMERIC(19,2),
    @RESULT AS NUMERIC(19,2)
    SELECT @RESULT1=SUM(A.QUANTITY)
    FROM INV1 A
    JOIN OINV B ON A.DOCENTRY=B.DOCENTRY
    WHERE A.ITEMCODE=@ITEMCODE
    AND B.DOCDATE BETWEEN (@STARTDATE1) AND (@ENDDATE1)
    SELECT @RESULT2=SUM(A.QUANTITY)
    FROM RIN1 A
    JOIN ORIN B ON A.DOCENTRY=B.DOCENTRY
    WHERE A.ITEMCODE=@ITEMCODE
    AND B.DOCDATE BETWEEN (@STARTDATE1) AND (@ENDDATE1)
    SELECT @RESULT=ISNULL(@RESULT1,0)-ISNULL(@RESULT2,0)
    RETURN @RESULT
    END
    could you please how to edit the query as well?
    i have added the following code and it comes up with the right itemcode but the quantity does not work
    DECLARE
    @ITEMCODE AS NVARCHAR(10),
    @STARTDATE1 as DATETIME,
    @ENDDATE1 AS DATETIME
    SET @STARTDATE1=(SELECT MAX(T0.DOCDATE) FROM oinv t0 WHERE T0.DOCDATE='2010-11-01')
    set @ENDDATE1=(SELECT MAX(T0.DOCDATE) FROM oinv t0 WHERE T0.DOCDATE='2010-11-30')
    SELECT
    T1.ItemCode
    , T1.Dscription
    ,DBO.F_CALCULATION_QUANTITY(@ITEMCODE,@STARTDATE1,@ENDDATE1)
    FROM OINV T0 
    INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry
    INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode
    INNER JOIN OSLP T3 ON T0.SLPCODE=T3.SLPCODE
    WHERE
    (T0.DOCDATE BETWEEN @STARTDATE1 AND @ENDDATE1)
    and  (t2.cardcode ='80022')
    and (T0.CANCELED= 'N')
    group by  t1.itemcode, T1.Dscription, t2.suppcatnum
    the result is this
    70200     alert1     0.00
    70210     alert2     0.00
    70220     alert3     0.00
    70230     alert4     0.00
    as you can see the quantity is 0 and it shouldnt be
    Edited by: Fasolis Vasilios on Oct 31, 2011 10:49 AM

  • Read consistency in query with pl/sql functions

    Not sure if this is a bug or feature, but a query containing a user-defined pl/sql function does not include tables accessed within the pl/sql function in the read consistent view of data, eg
    select myfunc from tableA
    myfunc is a stored function that queries tableB and returns a value
    If a change to tableB is committed in another session during fetch phase of select statement, then fetched rows reflect the changes. The database does not recognise tables accessed in the plsql function as being part of the query.
    This happens in 7.3.4 and 8.1.6. Don't have 9i so can't tell.
    Anyone know if this is a bug or feature?
    Aside: you can also drop the plsql function whilst the fetch is running. It will kill the fetch. No DDL lock taken on the plsql function whilst select is running! Seems wrong.

    I don't know Forms but I know SQL*Plus and Oracle database. Normally PL/SQL running on the database can only access files on the host where the database instance is running even if you start PL/SQL with a SQL*Plus connection from another host.
    PL/SQL runs only the database instance not on the client side even if you start the PL/SQL code from a remote connection with SQL*Plus.

  • Problem facing in performance of the query which calls one function

    Hello Team,
    Actually am facing performance issue for the following query.Even though for columns in where condition indexes are there.Also I used the hints but no use.Pls suggest me how can I increase the performance.Currently it's taking around 5 mins to execute the select statement.
    SELECT crf_id, crf_code,crf_nme,
    DECODE(UPPER( fn_hrc_refs( crf_id)),'Y','Yes','No') ua_ind,
    creation_date, datetime_stamp, user_id
    FROM BC_FBCTOR
    ORDER BY crf_nme DESC;
    FUNCTION fn_hrc_refs (pi_crf_id IN NUMBER)
    RETURN VARCHAR2
    IS
    childref VARCHAR2 (1) := 'N';
    cnt NUMBER := 0;
    BEGIN
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM BC_CALIB
         WHERE crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM BC_CALIB_DET
         WHERE crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM BC_MPG_DTL
         WHERE crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM BC_CNTRY_DTL
         WHERE crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM BC_COR
         WHERE x_axis_crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM BC_RESI_COR
         WHERE y_axis_crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM BC_PRIME
         WHERE crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM DR_FBCT
         WHERE crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM DR_RISK
         WHERE crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM EC_DTL
         WHERE crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM EC_RESULT
         WHERE crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM EC_LOSS
         WHERE crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM EC_CRITERIA
         WHERE crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM EC_CORR
         WHERE crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
         SELECT NVL (COUNT (*), 0)
         INTO cnt
         FROM EC_PORT
         WHERE crf_id = pi_crf_id;
         IF cnt<> 0
         THEN
         childref := 'Y';
         RETURN childref;
         END IF;
    RETURN childref;
    EXCEPTION
    WHEN OTHERS
    THEN
    childref := 'N';
    RETURN childref;
    END;
    Regards,
    Ashis

    You are checking for the existence of detail records. What is the purpose of this. Most applications I know rely on normal foreign key constraint to ensure parent-child relationsships.
    The select is slow for two reasons.
    reason one) You count all details records when you only need to know if one detail records exists or not.
    reason two) Multiple context switches between sql and pl/sql for each row of your parent table
    SELECT NVL (COUNT (*), 0)
    INTO cnt
    FROM BC_CALIB
    WHERE crf_id = pi_crf_id;
    IF cnt 0
    THEN
    childref := 'Y';
    RETURN childref;
    END IF;This could be replaced by
    begin
       SELECT 'Y'
       INTO childref
       FROM BC_CALIB
       WHERE crf_id = pi_crf_id
       and rownum = 1; /* only fetch one row */
    execption
       when no_data_found then
         /* continue with the next select */
    end;
    return childref;but this would still do a lot of context switches, especially for parents without a detail records.
    Also consider this option:
    SELECT crf_id, crf_code,crf_nme,
          case when exists (SELECT null FROM BC_CALIB t WHERE t.crf_id = BC_FBCTOR.crf_id)
                 then 'Yes'
                 when exists (SELECT null FROM BC_CALIB_DET t WHERE t.crf_id = BC_FBCTOR.crf_id)
                 then 'Yes'
          else
              'No'
          end ua_ind,
    creation_date, datetime_stamp, user_id
    FROM BC_FBCTOR
    ORDER BY crf_nme DESC;It should also be possible to use a UNION ALL select instead of different single case lines. But i choose this way since it resembles your original selection a bit better. And you could change the 'Yes' to something different like 'Childs in Table abc'.
    Edited by: Sven W. on Sep 5, 2008 2:29 PM

  • Query rewrite using analytical functions

    Hallo list,
    can someone help me in rewriting this sql statment in a better way ?
    select k.kos_aktnr, vpr.vorgang_id, vpr.vorgang_nr, vpr.vorgang_name, 0 as
      vormonat, max((select sum (menge)
    from
    swp.kosten k1 where ressource_id = :1 and jahr = :2 and monat = :3 and tag =
      1 and k.kos_aktnr = k1.kos_aktnr)),
    max((select sum (menge) from swp.kosten
      k1 where ressource_id = :4 and jahr = :5 and monat = :6 and tag = 2 and
      k.kos_aktnr = k1.kos_aktnr)),
    from  swp.kosten k, sw.vorgang v, sw.vorgang vpr
    WHERE v.vorgang_id = k.kos_aktnr AND v.projekt_id = vpr.vorgang_id AND
                v.ausblenden = 0 AND vpr.ausblenden = 0 AND v.vorgtypart_id <> 1 AND
                k.ressource_id = :94 AND k.jahr = :95 AND k.monat = :96 GROUP BY
                k.kos_aktnr, vpr.vorgang_id, vpr.vorgang_nr, vpr.vorgang_namei have this part with the ' max ' ecexute for each date this means ivae 30 statment with max function.
    Basically this query retrieves the attendance hours for an employee.

    [duplicate thread|http://forums.oracle.com/forums/thread.jspa?threadID=961297&tstart=0]

  • Parameter passing to custom SQL query using PL/SQL FUNCTION

    Hi
    In order to pass a parameter to the query in custom folder of a business area I created a function and mapped it to the Custome query using Discoverer Desktop. There is no error in mapping as the system does not throw any error. When I am inputting the Parameter for the input values everytime the query doesnot return any rows.
    Can anybody help in this regard

    Hi,
    I need to take the request Id as input from the user and then fetch only the data pertaining to that requet Id. As a lot of complex joins are involved I need to pass request id as parameter to the custome folder.
    The package i greated:
    CREATE OR REPLACE PACKAGE SETPARAM
    AS
    param1 varchar2(25);
    param2 varchar2(25);
    FUNCTION SET_PARAM1(p1 IN varchar2) RETURN NUMBER ;
    FUNCTION GET_PARAM1 RETURN varchar2;
    END SETPARAM;
    CREATE OR REPLACE PACKAGE BODY SETPARAM AS
    FUNCTION SET_PARAM1(p1 IN varchar2) RETURN NUMBER IS
    BEGIN
    fnd_client_info.set_org_context('138');
    param1 := p1;
    dbms_output.put_line(param1);
    RETURN 1;
    END;
    FUNCTION GET_PARAM1 RETURN varchar2 AS
    BEGIN
    RETURN param1;
    END;
    END SETPARAM;
    I registered the set_param1 function as a pl/sql function in discoverer admin.
    This function is called on the condition associated with the parameter in Discoverer Desktop when i run the report.
    In the custom folder query i have this piece in the where clause
    WHERE tnfo.request_id = NVL(APPS.SETPARAM.GET_PARAM1,7383588)
    And everytime i get the data pertaining to request id =7383588,
    Please suggest where i went wrong
    thanks
    Ashwini

  • Ad-Hoc Query Field using HR_99S_INTERVAL_BETWEEN_DATES function module

    I have created an additional field in Sq02 to calculate years between two dates and am using function module HR_99S_INTERVAL_BETWEEN_DATES.
    There are no syntax erros but when I run a query in Sq01 and output the field it doesn't calculate instead gives "00000" output.
    The field Code in the additional field
    Clear ZHR_SERVICEYRS.
    DATA: V_MONTHS TYPE  i.
    DATA: V_YEARS TYPE  i.
    DATA: V_MONTHS1 TYPE  char20.
    DATA: V_YEARS1 TYPE  char20.
    CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES'
      EXPORTING
       BEGDA           = P0002-GBDAT
       ENDDA           = Sy-Datum
      TAB_MODE        = ' '
    IMPORTING
      DAYS            =
      C_WEEKS         =
       C_MONTHS        = V_MONTHS
       C_YEARS         = V_YEARS
      WEEKS           =
      MONTHS          =
      YEARS           =
      D_MONTHS        =
      MONTH_TAB       =
    V_MONTHS1 = V_MONTHS.
    V_YEARS1 =  V_YEARS.
    CONCATENATE V_YEARS1  '.'  V_MONTHS1 INTO ZHR_SERVICEYRS.
    condense ZHR_SERVICEYRS.
    has anybody had similar problems! Help Appreciated!

    Hi Anuj,
    Yes, you use Transaction Code SQ02.  Find your infoset on the list - if you want to create a new infoset you can do so.  If it is an existing infoset, select it and Change.  On the next screen you will see all the infotypes in that infoset on the left.  The fields available for Ad Hoc are on the right.  Open the infotype table on the left and the field group on the right.  If the field is not included in the field group all you have to do is drag and drop from the list on the left to the correct field group.  If the infotype is not already in your infoset, select Edit --> Change Infotype Selection from the top menu bar.  Place a check in the new infotype and then return and do the drag and drop if necessary.  You will find the basic fields already moved to the field group. 
    You say you want information from IT0008-Basic Pay and IT1005-Planned Compensation.  Problem is that if you use the standard HR logical data base, there is no link directly between a person and IT1005.  IT1005 is assigned to a Position or a Job.  If it is assigned to a Position, you can select the "Change Infotype Selection" action and ago to the bottom of the list to Related Objects.  Here select Position and open that to find the IT1005.  If the IT1005 is tied to the Job, there is no direct link. Thus, if it does not already exist, you will need to create an infoset based on the PCH logical database and object Position.  Now you can link that Position to "Holder"-Person and "Described by"-Job.  Again, select the infotypes and fields you want and you will be able to obtain your information via Ad Hoc Query based on that infoset.
    Paul

  • Querying from a cursor function

    Is there any way to use a cursor function in the from clause of a query?

    Hallo,
    you mean probably CURSOR expression.
    No, we cannot...
    select * from (cursor(select * from emp))ORA-22902: CURSOR expression not allowed
    Cause: CURSOR on a subquery is allowed only in the top-level SELECT list of a query.
    Action: none
    Regards
    Dmytro

  • Convert normalized query to procedure to function

    Hi,
    I have a table with this structure:
    CREATE TABLE TRANS
      ITEM_ID    VARCHAR2(8 BYTE),
      ITEM_TYPE  VARCHAR2(20 BYTE),
      ITEM_YEAR  NUMBER,
      JAN        FLOAT(126),
      FEB        FLOAT(126),
      MAR        FLOAT(126),
      APR        FLOAT(126),
      MAY        FLOAT(126),
      JUN        FLOAT(126),
      JUL        FLOAT(126),
      AUG        FLOAT(126),
      SEP        FLOAT(126),
      OCT        FLOAT(126),
      NOV        FLOAT(126),
      DEC        FLOAT(126)
    )I wrote the following PL/SQL to normalize the data into a few columns. Now I need help converting this to a package procedure, and this is where I am stuck.
    DECLARE
       TYPE c IS REF CURSOR;
       cur    c;
       TYPE r IS RECORD (
          itm   trans.item_id%TYPE,
          mth   VARCHAR2 (3),
          val   FLOAT
       rec    r;
       stmt   VARCHAR2 (200);
       item   VARCHAR (8)    := 'AB054240';
    BEGIN
       FOR i IN 1 .. 12
       LOOP
    -- calls function to return abbreviated month name
          stmt :=
                'SELECT item_id,  get_month_abbrev ('
             || i
             || '), '
             || get_month_abbrev (i)
             || ' FROM trans t WHERE t.item_id = '''
             || item
             || '''';
          OPEN cur FOR stmt;
          LOOP
             FETCH cur
              INTO rec;
             EXIT WHEN cur%NOTFOUND;
    -- test
             DBMS_OUTPUT.put_line ( rec.itm || chr(9) || rec.mth || chr(9) || rec.val);
          END LOOP;
       END LOOP;
       CLOSE cur;
    END;In searching online, I got the idea of creating an Object Type for the 'record' type and a Collection Type for the table based on the former.
    I would then open the table using a sys_refcursorUnfortunately, I could not get this to work. Ideally I would like to keep it all encapsulated in one procedure. I can't figure out a way to make an OUT parameter that will hold the table.
    The end result is that I have a client program that will execute this procedure/function to return the normalized query result set for display.
    Any suggestion or critique would be appreciated.

    I still don't understand why you feel the need for looping round to create your dynamic SQL when you could just use static SQL (eg, like the query I gave you earlier)?
    If you're wanting to take a row and turn it on its side, then the query I provided would do what you wanted:
    with trans as (select 1 item_id, 'A' item_type, 2009 item_year, 10 jan, 20 feb, 30 mar, 40 apr, 50 may, 60 jun, 70 jul, 80 aug, 90 sep, 100 oct, 110 nov, 120 dec from dual union all
                   select 1 item_id, 'A' item_type, 2008 item_year, 110 jan, 120 feb, 130 mar, 140 apr, 150 may, 160 jun, 170 jul, 180 aug, 190 sep, 1100 oct, 1110 nov, 1120 dec from dual union all
                   select 2 item_id, 'C' item_type, 2009 item_year, 210 jan, 220 feb, 230 mar, 240 apr, 250 may, 260 jun, 270 jul, 280 aug, 290 sep, 2100 oct, 2100 nov, 2120 dec from dual),
    -- end of mimicking data in your table
    month_tab as (select 'JAN' month_name from dual union all
                   select 'FEB' month_name from dual union all
                   select 'MAR' month_name from dual union all
                   select 'APR' month_name from dual union all
                   select 'MAY' month_name from dual union all
                   select 'JUN' month_name from dual union all
                   select 'JUL' month_name from dual union all
                   select 'AUG' month_name from dual union all
                   select 'SEP' month_name from dual union all
                   select 'OCT' month_name from dual union all
                   select 'NOV' month_name from dual union all
                   select 'DEC' month_name from dual)
    SELECT tr.item_id "Item",
           mt.month_name "Month",
           DECODE(mt.month_name, 'JAN', tr.jan,
                                 'FEB', tr.feb,
                                 'MAR', tr.mar,
                                 'APR', tr.apr,
                                 'MAY', tr.may,
                                 'JUN', tr.jun,
                                 'JUL', tr.jul,
                                 'AUG', tr.aug,
                                 'SEP', tr.sep,
                                 'OCT', tr.oct,
                                 'NOV', tr.nov,
                                 'DEC', tr.dec) "Amount"
    FROM   trans tr,
           month_tab mt
    WHERE  tr.item_id = 1 --p_item_id
    AND    tr.item_year = 2009 --p_item_year;
          Item Month     Amount
             1 JAN           10
             1 FEB           20
             1 MAR           30
             1 APR           40
             1 MAY           50
             1 JUN           60
             1 JUL           70
             1 AUG           80
             1 SEP           90
             1 OCT          100
             1 NOV          110
             1 DEC          120There are several advantages for using one static query:
    1. Easier to debug: the query is right there - you can copy it out of the procedure, change the parameters and then run it to see what values were being returned. You do not have to manually construct the query prior to running it.
    2. Less code, less steps - therefore increased performance and easier maintenance. You no longer have an extra function call that the database needs to execute every time it runs the query.
    3. More efficient code; no need to access the table 12 times, as the above query only accesses the table once. Again, leading to improved performance.
    4. Easier to read and there maintain.
    5. The PL/SQL engine won't check dynamic sql until runtime; if you've made a syntax error, the code will still compile, but will fail at runtime. With static SQL, the code won't compile until you've fixed all syntax errors.
    6. Dynamic sql won't show up in the dependencies views (eg. user_dependencies), so makes it harder to track what tables are used by your code.
    In short, avoid dynamic SQL if you can, stick to doing as much of the work in SQL as you can and hopefully you'll have faster and easier-to-maintain code.

Maybe you are looking for