Help !!! - regarding [b]ASCII[/b] sql function

Hello -
From oracle docs I got the following regarding ASCII function -
ASCII returns the decimal representation in the database character set of the first character of char and it works for first char only.
Question-
If I would like to 'decimal representation in the database character set' for all the characters in one column of table, just not the first character.
For the below data -
158     .abc
159     -abc
The following query -
select id,ascii(name) from temp
158     46
159     45
only returns for first character in the name column.
I want for the whole name column data presentation.
How it can be done ? is there any other function or some work-around.
Any help would be really appreciated.
Thank you so much
Rama....

You could certainly build your own function to do this, something like
create or replace function ascii_string( str IN VARCHAR2 )
   RETURN VARCHAR2
IS
   returnVal VARCHAR2(4000) := ' ';
BEGIN
   FOR x IN 1..LENGTH(str)
   LOOP
      returnVal := returnVal || to_char( ASCII(SUBSTR(str, x)) ) || ' ';
   END LOOP;
   RETURN returnVal;
END;Justin
Distributed Database Consulting, Inc.
http://www.ddbcinc.com/askDDBC

Similar Messages

  • Help regarding Triggers in pl/sql

    I have written a table level trigger .
    Purpose it to execute a procedure for every insert in a particular table.
    the procedure arguments is dependent on that table .the problem is It is exceuting the trigger properly but it is not calling the procedure .
    I have attaced the the trigger code with this thread.Please help me regarding this procedure .
    CREATE OR REPLACE TRIGGER FISCAL_UPD
    AFTER INSERT OR UPDATE
    OF FISCAL_START_DATE
    ON PARAMETER
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    DECLARE
    fsd_trg DATE;
    BEGIN
    SELECT fiscal_start_date
    INTO fsd_trg
    FROM parameter;
    DBMS_OUTPUT.put_line ('eXECUTED ' || fsd_trg);
    timedim(fsd_trg);
    DBMS_OUTPUT.put_line ('eXECUTED ' || :NEW.fiscal_start_date);
    END;
    Thanks
    prasanna

    Hi,
    SELECT fiscal_start_date
    INTO fsd_trg
    FROM parameter;
    Are you getting any errors?
    will this table will have only one record?
    Regards
    RK

  • Register PL/SQL functions

    Hi,
    I want to use the EXTRACT function in Discoverer. I went through the Help for the «Import PL/SQL function» without success....
    When I click the «Import» button, I see a HUGE list of functions, and I don't recognize which is the one I want.
    I use that EXTRACT in the same database with PL/SQL developer and it works fine, but I get a «Function EXTRACT has not been registered with the EUL» message when I try to use it in Discoverer.
    Any one knows how to «bring» the right function in the EUL ??
    Thanks.

    I was able to import a Oracle standard package function SYS_CONTEXT and view it in Discoverer Desktop/Plus.
    However when I create my own package function in a schema "xxdev" and then import via Disco Admin, I cannot view this function in Discoverer Desktop/Plus. These are the steps that I followed to implement it:
    1. create package in xxdev schema
    2. grant execute on package to noetix_sys & noetix_eul
    3. register the function in Disco Admin
    4. login to Disco Desktop/Plus and try creating a calculation field and lookup functions.
    The function is not visible. I followed the exact same steps for STANDARD.SYS_CONTEXT function and it was visible. Is something missing in my steps to do?
    Thanks in advance.

  • Regarding sql function error  for Hijri date to Gregorian date

    Hi ,
    I want to convert Hijri date format into Gregorian date format . i write the script with  sql function  like this
    $Hijri_Date = '16/04/1428';
    $Gregorian_Date = sql('DS_REPO','SELECT CONVERT(DATE,[$Hijri_Date],131)');
    print($Gregorian_Date);
    here $Hijri_Date data type is varchar and $Gregorian_Date data type is date.
    but  I am getting error like
    7868     5812     DBS-070401     10/26/2010 10:37:18 PM     |Session Job_Hijradata_Conversion
    7868     5812     DBS-070401     10/26/2010 10:37:18 PM     ODBC data source <UIPL-LAP-0013\SQLEXPRESS> error message for operation <SQLExecute>: <[Microsoft][SQL Server Native Client
    7868     5812     DBS-070401     10/26/2010 10:37:18 PM     10.0][SQL Server]Explicit conversion from data type int to date is not allowed.>.
    7868     5812     RUN-050304     10/26/2010 10:37:18 PM     |Session Job_Hijradata_Conversion
    7868     5812     RUN-050304     10/26/2010 10:37:18 PM     Function call <sql ( DS_REPO, SELECT CONVERT(DATE,16/04/1428,131) ) > failed, due to error <70401>: <ODBC data source
    7868     5812     RUN-050304     10/26/2010 10:37:18 PM     <UIPL-LAP-0013\SQLEXPRESS> error message for operation <SQLExecute>: <[Microsoft][SQL Server Native Client 10.0][SQL
    7868     5812     RUN-050304     10/26/2010 10:37:18 PM     Server]Explicit conversion from data type int to date is not allowed.>.>.
    7868     5812     RUN-053008     10/26/2010 10:37:18 PM     |Session Job_Hijradata_Conversion
    please help me out to solve this problem .
    Please suggest any other solution to convert hijri date format to gregorian date format.
    Thanks&Regards,
    Ramana.

    Hi ,
    In Data quality there is no inbuild function for converting hijri date to gregorian date .  we have the function for converting julian date to gregorian date.
    Thanks&Regards,
    Ramana.

  • Need help regarding sql query

    hii All
    I need help for pl/sql function.
    I build a function for monthly attendance all employees.
    but now i want to show all Sundays with 'S' and others respectively 'P' and 'A'.
    Currently Sunday also shows 'A'
    So please help
    SQL queries ... like
    SELECT DISTINCT AL.USERNAME,
    CASE WHEN DAY1 =1 THEN 'P' ELSE 'A' END DAY1,
    CASE WHEN DAY2 =1 THEN 'P' ELSE 'A' END DAY2,
    CASE WHEN DAY3 =1 THEN 'P' ELSE 'A' END DAY3,
    CASE WHEN DAY31 =1 THEN 'P' ELSE 'A' END DAY31
    FROM
    SELECT DISTINCT USERNAME, SUM(CASE WHEN
    fromdt=TRUNC(L.LOGIN_DATE) THEN
    1
    ELSE
    0
    END) DAY1
    ,SUM(CASE WHEN
    fromdt +1=TRUNC(L.LOGIN_DATE) THEN
    1
    ELSE
    0
    END) DAY2,
    SUM(CASE WHEN
    fromdt+30=TRUNC(L.LOGIN_DATE) THEN
    1
    ELSE
    0
    END) DAY31
    FROM ( SELECT DISTINCT TRUNC(LOGIN_DATE)LOGIN_DATE ,USERNAME FROM FCDM_AUDIT_TRAIL_NEW WHERE
    TRUNC(LOGIN_DATE) BETWEEN fromdt AND todt
    -- to_date( login_date, 'dd-mom-yyyy') between to_date( fromdt, 'dd-mom-yyyy') and to_date( todt, 'dd-mom-yyyy')
    ) L
    GROUP BY USERNAME
    ) AL;
    how can i show matched Sundays and show with 'SUN' or 'S'
    Regards
    vij..

    Try this way:
    SELECT USERNAME,
           MAX(CASE WHEN to_char(fromdt,'d')='1' and fromdt=TRUNC(L.LOGIN_DATE) THEN 'S'
                    WHEN to_char(fromdt,'d')!='1' and fromdt=TRUNC(L.LOGIN_DATE) THEN 'P'
                    ELSE 'A') DAY1,
           MAX(CASE WHEN to_char(fromdt+1,'d')='1' and fromdt+1=TRUNC(L.LOGIN_DATE) THEN 'S'
                    WHEN to_char(fromdt+1,'d')!='1' and fromdt+1=TRUNC(L.LOGIN_DATE) THEN 'P'
                    ELSE 'A') DAY2,
           MAX(CASE WHEN to_char(fromdt+30,'d')='1' and fromdt+30=TRUNC(L.LOGIN_DATE) THEN 'S'
                    WHEN to_char(fromdt+30,'d')!='1' and fromdt+30=TRUNC(L.LOGIN_DATE) THEN 'P'
                    ELSE 'A') DAY31
    FROM
    (SELECT DISTINCT TRUNC(LOGIN_DATE) LOGIN_DATE,
            USERNAME
       FROM FCDM_AUDIT_TRAIL_NEW
      WHERE TRUNC(LOGIN_DATE) BETWEEN fromdt AND todt
    ) L
    Group by USERNAME
    ;Max
    http://oracleitalia.wordpress.com

  • Calling pl/sql function in CKM...pls help

    Hi,
    I have made a call to PL/SQL function in CKM customization. The code is :
    declare
    L_PMG_VALUE VARCHAR(3);
    begin
    L_PMG_VALUE:='PMG';
    VALIDATE_PMG_VALUE(L_PMG_VALUE);
    end;
    When i run it, it throws error which says:
    6550 : 65000 : java.sql.SQLException: ORA-06550: line 1, column 64:
    PLS-00221: 'VALIDATE_PMG_VALUE' is not a procedure or is undefined
    ORA-06550: line 1, column 64:
    PL/SQL: Statement ignored
    Function is compiled in the database and its working. I have selected the Technology as Oracle and correct Schema Name.
    Please help

    Hi,
    try the following way. i have not tried ....i think it helps you.
    In which schema you have created that procedure.
    Does the ODI user mantioned in topology have execute permissions on the procedure? if the ODI user have execute previlage on the procedure then in CKM customisation call the procedure like <schema>.<procedure>.
    Please let me know any issues.
    Thanks,

  • Help w/MaxDB Function; also: how does the "Debug SQL" function work?

    Hi there forum folks,
    In my former life, I was a Basis guy, but I haven't had the pleasure of working directly with SAP applications in a few months.  My current project is to attempt to use MaxDB in a real estate environment.  We're tracking home listings so that we can build statistical reports... such as "what agents are in the Top 100 in postal code X?"
    Anyway, as part of this project, I have attempted to construct my very first MaxDB database function.  Unfortunately, it doesn't give me the answers I'm hoping to see.  Here's the function:
    CREATE FUNCTION COUNT_LISTINGS (AGENTID CHAR(10)) RETURNS FIXED(6,1) AS
      VAR COLISTINGAGENTID CHAR(10);
          LISTINGAGENTID   CHAR(10);
          MLSNUMBER        CHAR(7);
          UNITS            FIXED(6,1);
      SET UNITS = 0;
      DECLARE FUNCTIONRESULT CURSOR FOR
        SELECT MLSNUMBER,
               LISTINGAGENTID,
               COLISTINGAGENTID FROM FREDDIE.GLAR_SOLDS
         WHERE LISTINGAGENTID = :agentid OR COLISTINGAGENTID = :agentid;
      IF $COUNT IS NULL THEN
        BEGIN
          CLOSE FUNCTIONRESULT;
          RETURN UNITS;
        END
      ELSE
        SET $RC = 0;
      WHILE $RC = 0 DO BEGIN
        FETCH FUNCTIONRESULT INTO :mlsnumber, :listingagentid, :colistingagentid;
        IF ( LISTINGAGENTID   = AGENTID AND COLISTINGAGENTID IS NULL ) OR
           ( COLISTINGAGENTID = AGENTID AND LISTINGAGENTID   IS NULL ) THEN
          SET UNITS = UNITS + 1
        ELSE
          SET UNITS = UNITS + 0.5;
      END;
    CLOSE FUNCTIONRESULT;
    RETURN UNITS;
    I've tried to follow the official MaxDB documentation.  My first deviation from that standard was the use of the "$COUNT" variable (instead of the "$RC" variable) immediately after the DECLARE/SELECT statement above.  When I tried to use $RC, for either a successful or unsuccessful query, $RC was always set to a non-zero value.
    I believe I'm past that, but now my issue is down around that FETCH statement.  The UNITS variable doesn't end up with the value I expect.  I know that it can be terribly confusing to try to analyze someone else's logic, but here's a brief narrative that describes what I'm trying to do...
    The GLAR_SOLDS table holds one line for each home sold.  It's keyed by the MLSnumber.  Each record also stores up to four agents who've been involved in the transaction: the listing agent, the co-listing agent, the selling agent, and the co-selling agent.  The database function I've written above pertains to the listing side only.  If I can get this to work, a separate function will process the selling side.  If no co-listing agent is involved in a given sell, that agent should get credit for 1 unit sold.  If he/she has help from a co-listing agent, the agent should only get credit for 1/2 unit sold.
    Also, does anyone know how the "Debug SQL" functionality is supposed to work within Database Studio?  When I right-mouse click on my function, and follow the path thru "Debug As...", after entering the connection & function arguments, I'm presented with an empty screen.  If you could point me to some documentation somewhere, I'd gratefully read it.
    I'm using MaxDB 7.7.06.09 on Windows XP (WIN32) with MaxDB Database Studio 7.7.06.09 (build 009-123-202-944).
    Thanks everyone for your help & advice.
    ~Fred

    Fred,
    please either provide the full SQL statements for your example or stick with mine.
    I'm not going to build it up myself a second time to suit yours now.
    >  But now, my issue is how do I store the resultant data in its own table?
    So where is the problem?
    INSERT INTO <target table> (field 1, field 2, ...)  (<your query>)  UDPATE DUPLICATES-
    With my tables this looks like this:
    create table sell_result (list_agent varchar(20) primary key, SUM_CREDIT fixed (10,2))
    insert
    into sell_result (list_agent,sum_credit)
        ( select list_agent, sum (credit) as SUM_CREDIT
          from ( select sh.object_id,lag.name as list_agent, 1 as credit
                 from soldhomes sh join agents lag on lag.id = sh.list_agent_id
                union all
                 select sh.object_id, lag.name as list_coagent, 0.5 as credit
                 from soldhomes sh join agents lag on lag.id = sh.list_coagent_id
          group by list_agent
    update duplicates
    Check what we have now
    sqlcli db770=> select * from sell_result
    | LIST_AGENT           | SUM_CREDIT        |
    | -------------------- | ----------------- |
    | Lars                 |              4.50 |
    | Lisa                 |              3.00 |
    | Mona                 |              2.50 |
    | Paul                 |              2.50 |
    4 rows selected (600 usec)
    Now add some sales data...
    Insert into soldhomes values (11, 1, 2, NULL, NULL)
    Insert into soldhomes values (12, 2, NULL, NULL, NULL)
    Insert into soldhomes values (13, 2, NULL, NULL, NULL)
    Re-run the INSERT command and you're done:
    sqlcli db770=> select * from sell_result
    | LIST_AGENT           | SUM_CREDIT        |
    | -------------------- | ----------------- |
    | Lars                 |              5.50 |
    | Lisa                 |              3.00 |
    | Mona                 |              5.00 |
    | Paul                 |              2.50 |
    4 rows selected (390 usec)
    Neat, isn't it?

  • Help regarding MBeanServerConnection queryName function

    Hi guys, i recently start using JMX and i need some help regarding queryName function. I want to get a specific set of objectNames, not all of them.
    I have the following List of Beans
    ObjectName = WowzaMediaServerPro:loadBalancer=LoadBalancer,loadBalancerServers=LoadBalancerServers,serverId=14b69d-eee40f3d6467,name=LoadBalancerServer
    ObjectName = WowzaMediaServerPro:loadBalancer=LoadBalancer,loadBalancerServers=LoadBalancerServers,serverId=40-a0b2-f1dfb314406f,name=LoadBalancerServer
    ObjectName = WowzaMediaServerPro:loadBalancer=LoadBalancer,loadBalancerServers=LoadBalancerServers,serverId=98-4af4-9147-bf45fb49c044,name=LoadBalancerServer
    ObjectName = WowzaMediaServerPro:loadBalancer=LoadBalancer,loadBalancerServers=LoadBalancerServers,serverId=c-4bf6-9c42-d5c3acea6662,name=LoadBalancerServer
    ObjectName = WowzaMediaServerPro:loadBalancer=LoadBalancer,name=LoadBalancerListener
    ObjectName = WowzaMediaServerPro:loadBalancer=LoadBalancer,name=LoadBalancerRedirector
    ObjectName = WowzaMediaServerPro:mediaCache=MediaCache,name=IOPerformance
    ObjectName = WowzaMediaServerPro:mediaCache=MediaCache,name=MediaCache
    ObjectName = WowzaMediaServerPro:mediaCache=MediaCache,name=PendingReadAheadRequestTracker
    ObjectName = WowzaMediaServerPro:mediaCache=MediaCache,name=PendingWriteRequestTracker
    ObjectName = WowzaMediaServerPro:name=Connections
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,name=Connections
    ObjectName = WowzaMediaServerPro:name=HandlerThreadPool
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,name=HandlerThreadPool
    ObjectName = WowzaMediaServerPro:name=IOPerformance
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,name=IOPerformance
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,name=IOScheduler
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=chat,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=default,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=file,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=live,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=live-lowlatency,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=live-record,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=live-record-lowlatency,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=liverepeater-buffer,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=liverepeater-edge,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=liverepeater-edge-lowlatency,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=liverepeater-edge-origin,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=liverepeater-origin,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=netconnection,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=record,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-buffer,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-buffer-lowlatency,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-buffer-record,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-buffer-record-lowlatency,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-live,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-live-lowlatency,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-live-record,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtp-live-record-lowlatency,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=rtpout,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=shoutcast,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=shoutcast-buffer,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=shoutcast-buffer-record,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,streamTypes=StreamTypes,streamTypeName=shoutcast-record,name=Properties
    ObjectName = WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,name=Properties
    ObjectName = WowzaMediaServerPro:name=Server
    ObjectName = WowzaMediaServerPro:name=ServerNotifications
    My question is that , how can i get those rows that contains "WowzaMediaServerPro:loadBalancer=LoadBalancer,loadBalancerServers=LoadBalancerServers"?
    Please help

    Hello ,
    There should be a number of BRF+ tutorials available in SCN which discuss the FDT APIs. You can have a look at them to get an idea of the various APIs available and their uses.
    For your usecase, you should do the following.
            lo_fdt_function         TYPE REF TO if_fdt_function,
            lo_fdt_result           TYPE REF TO if_fdt_result,
    * Get function handle
          CALL METHOD lo_fdt_factory->get_function
            EXPORTING
              iv_id       = lv_function_id
            RECEIVING
              ro_function = lo_fdt_function.
    where lv_function_id is the GUID of the BRF+ function . You can either make it a constant , or you can use a FDT API to get the function GUID from the BRF+ application name and function name.
    *   Set function context
        TRY.
            CALL METHOD lo_fdt_context->set_value
              EXPORTING
                iv_id    =
                ia_value =
    This is one way to set the input context ( pass the input to the BRF+ function to process ). There are other ways to do this as well. Which one you use would depend on the kind of input you want to pass.
    * Execute BRFPLUS function
      TRY.
          CALL METHOD lo_fdt_function->process
            EXPORTING
              io_context = lo_fdt_context
            IMPORTING
              eo_result  = lo_fdt_result.
    * Get result output
      TRY.
          CALL METHOD lo_fdt_result->get_value
            IMPORTING
              ea_value =
    Another direct way of doing it would be to use the method PROCESS of the class CL_FDT_FUNCTION_PROCESS.
    I have not gone into much explaination here , but it should provide you an idea of how you can go about it.Read the SCN docs on the APIs to get a better idea , or better still if you can get hold of a copy of the BRF+ book by Carsten Ziegler , you will get an end to end explaination of all BRF+ APIs in it.
    Regards,
    Indranil.

  • Help regarding VARI() function

    Hi All,
        I need more information, and if possible some example on how to use VARI() function.
        Thanks for your help.
    Regards,
    Shankar

    Hi Shankar,
         While VARC function is used to get the number of values available for the
         variable, as Anand mentioned VARI function is used to get the value of the
         variable.Usually they are used in conjunction.
         Here is the sample code:
        DATA L_COUNTRY TYPE 0COUNTRY.
    DATA L_COUNT TYPE I.
    DATA L_ENTRIES TYPE I.
    L_COUNT = 0.
    L_ENTRIES = VARC(COUNTRY).
    DO.
    L_COUNT = L_COUNT + 1.
    L_COUNTRY = VARI(COUNTRY, L_COUNT).
    {L_COUNTRY,NETSALES} = {L_COUNTRY,VOLUME} * {#,PRICE}.
    IF L_COUNT = L_ENTRIES.
    EXIT.
    ENDIF.
    ENDDO.
    Hope this helps.
    Cheers
    Srini

  • URgent: Help regarding SQL Query

    Hi ,
    I need help regarding an sql query.
    Sample Data:
    ITEM_TYPE  ITEM_NUM   UNIT_PRICE QUANTITY       LINE_TOTAL
    ITEM         1            5         10           50
    ITEM         2           10         5            50
    ITEM         1            5          5            25
    ITEM                       2         10           20
    TAX                                               16.5
    TAX                                              -3.5I would like to display the data as
    ITEM_TYPE ITEM_NUM  UNIT_PRICE          QUANTITY          LINE_TOTAL
    ITEM       1          5                 15               145
                  2         10                  5 
                              2                 10
    TAX                                                          13.0
    Line_total = unit_price * QuantityThanks in Advance
    G.Vamsi Krishna
    Edited by: user10733211 on Aug 5, 2009 7:42 AM
    Edited by: user10733211 on Aug 5, 2009 7:49 AM
    Edited by: user10733211 on Aug 5, 2009 8:12 AM
    Edited by: user10733211 on Aug 5, 2009 8:22 AM
    Edited by: user10733211 on Aug 5, 2009 8:24 AM

    Hi,
    Try this, use some analytics:
    SQL> with t as (
      2  select 'item' item_type, 1 item_num, 5 unit_price, 10 quantity, 50 linetotal from dual union all
      3  select 'item', 2, 10, 5, 50 from dual union all
      4  select 'item', 1, 5, 5, 25 from dual union all
      5  select 'item', null, 2, 10, 20 from dual union all
      6  select 'tax', null, null, null, 16.5 from dual union all
      7  select 'tax', null, null, null, -3.5 from dual
      8  ) -- actual query starts here:
      9  select item_type
    10  ,      item_num
    11  ,      unit_price
    12  ,      sum_qty
    13  ,      case when sum_lt = lag(sum_lt) over ( order by item_type, item_num )
    14              then null
    15              else sum_lt
    16         end  sum_lt
    17  from ( select item_type
    18         ,      item_num
    19         ,      unit_price
    20         ,      quantity
    21         ,      sum(quantity) over  ( partition by item_type, item_num ) sum_qty
    22         ,      sum(linetotal) over ( partition by item_type )           sum_lt
    23         ,      row_number() over ( partition by item_type, item_num  order by item_type, item_num ) rn
    24         from   t
    25       )
    26  where rn=1;
    ITEM   ITEM_NUM UNIT_PRICE    SUM_QTY     SUM_LT
    item          1          5         15        145
    item          2         10          5
    item                     2         10
    tax                                           13
    4 rows selected.
    edit
    And please use the code tag, instead of clunging with concats.
    Read:
    http://forums.oracle.com/forums/help.jspa
    Edited by: hoek on Aug 5, 2009 5:15 PM
    edit2
    Also nulls for item_type:
    ops$xmt%OPVN> with t as (
      2  select 'item' item_type, 1 item_num, 5 unit_price, 10 quantity, 50 linetotal from dual union all
      3  select 'item', 2, 10, 5, 50 from dual union all
      4  select 'item', 1, 5, 5, 25 from dual union all
      5  select 'item', null, 2, 10, 20 from dual union all
      6  select 'tax', null, null, null, 16.5 from dual union all
      7  select 'tax', null, null, null, -3.5 from dual
      8  ) -- actual query starts here:
      9  select case when item_type = lag(item_type) over ( order by item_type, item_num )
    10              then null
    11              else sum_lt
    12         end  item_type
    13  ,      item_num
    14  ,      unit_price
    15  ,      sum_qty
    16  ,      case when sum_lt = lag(sum_lt) over ( order by item_type, item_num )
    17              then null
    18              else sum_lt
    19         end  sum_lt
    20  from ( select item_type
    21         ,      item_num
    22         ,      unit_price
    23         ,      quantity
    24         ,      sum(quantity) over  ( partition by item_type, item_num ) sum_qty
    25         ,      sum(linetotal) over ( partition by item_type )           sum_lt
    26         ,      row_number() over ( partition by item_type, item_num  order by item_type, item_num ) rn
    27         from   t
    28       )
    29  where rn=1;
    ITEM_TYPE   ITEM_NUM UNIT_PRICE    SUM_QTY     SUM_LT
           145          1          5         15        145
                        2         10          5
                                   2         10
            13                                          13
    4 rows selected.If you really need a space instead of nulls, then simply replace the nulls by a space....
    Edited by: hoek on Aug 5, 2009 5:18 PM

  • SQL function help

    Hi, I am trying to write a sql query to replace the string starting with '<' with NULL. Right now I am using CASE statement to replace with NULLs. Is there any function to replace with NULLs for all the strings starting with '<%'.
    Example:
    CASE When field_name LIKE '<%' then NULL else field_name
    (before) After
    <NA> NULL
    <UK> NULL
    I want to replace the above sql suery with a single sql function without using CASE statements.
    I tried to use REPLACE function, but it replaces only single character. I want to replace the whole string
    Thanks in advance.

    Hi,
    Adam Martin posted a good solution. I hope that it is clear to you that you have to replace the string '<NA>' with your column(s).
    I.e.:
    SELECT REGEXP_REPLACE (a.col1, '^<.?+', '') AS col1
         , REGEXP_REPLACE (a.col2, '^<.?+', '') AS col2
      FROM table1 a;
    {code}
    You can use also the DECODE and SUBSTR functions to have the same result:
    The code below will get the first character with SUBSTR function and the DECODE function will return NULL if the value of the first character is "<" otherwise the value of the column.
    {code:sql}
    SELECT DECODE(SUBSTR(a.col1,1,1),'<', NULL, a.col1) AS col1
         , DECODE(SUBSTR(a.col2,1,1),'<', NULL, a.col2) AS col2
      FROM table1 a;
    {code}
    but using REGEXP_REPLACE is easier to write.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • LOOP in PL/SQL Function Body Help Needed

    I have a PL/SQL function that I'm trying to run and use a LOOP but I'm having some problems. I know the loop works since it output's two commas for me, which is how many records the query used for the LOOP returns, but I can't seem to find the right syntax to reference the column.
    DECLARE
    str VARCHAR2(2000) := "";
    BEGIN
    IF :P21_GLOBAL_ID IS NOT NULL THEN
    FOR q IN (
    SELECT
    ID,
    DRAW_DATE,
    ENTERED_BY
    FROM
    SAMPLE_T
    WHERE
    ID = :P21_GLOBAL_ID
    ORDER BY
    DRAW_DATE
    LOOP
    str := str || q.ID || ',' ;
    END LOOP;
    END IF;
    RETURN STR
    END;

    I just sent you the credentials.
    Interestingly, I have this same code for the source of a textarea on the page and the source for a report. I then modified the PL/SQL code as follows:
    DECLARE
         varSelect VARCHAR2(32767) := ''; --hold query SELECT definition
         varFrom VARCHAR2(32767) := ''; --hold query FROM clause definition
         varWhere VARCHAR2(32767) := ''; --hold query WHERE clause definition
         varOrderBy VARCHAR2(32767) := ''; --hold query ORDER BY clause definition
         varQuery VARCHAR2(32767) := ''; --hold query definition
    BEGIN
         IF TRIM(LOWER(TO_NUMBER(:P21_GLOBAL_TEMPLATE_ID))) IS NOT NULL THEN
              varSelect := 'SELECT SUBJECT_ID';
              varSelect := varSelect || ', SUBJECT_ID AS PHI';
              varSelect := varSelect || ', SUBJECT_ID AS ENTER_DATA';
              varSelect := varSelect || ', SUBJECT_ID AS LOGISTICA';
    for varTempQuery IN (
    SELECT
    stc.question_name as field_name,
    sti.read_security,
    sti.write_security,
    nvl(sti.validation_type,decode(stc.validation_rules,'None','TEXT_FIELD')) as validation_type,
    sti.html_caption,
    nvl(upper(sti.html_display_type),'TEXTFIELD') as html_display_type,
    sti.html_table_row,
    sti.html_table_column
    FROM
    rix.study_subject_templates sst,
    rix.study_subject_Template_items sti,
    rix.questions stc
    WHERE
    TRIM(LOWER(TO_NUMBER(sst.ss_template_Id))) = TRIM(LOWER(TO_NUMBER(:P21_GLOBAL_TEMPLATE_ID)))
    AND TRIM(LOWER(TO_NUMBER(sst.ss_Template_id))) = TRIM(LOWER(TO_NUMBER(sti.ss_Template_id)))
    AND TRIM(LOWER(TO_NUMBER(sti.phi_qid))) = TRIM(LOWER(TO_NUMBER(stc.qid)))
    AND TRIM(LOWER(TO_CHAR(sti.template_item_Status))) <> TRIM(LOWER(TO_CHAR('RETIRED')))
    ORDER BY
    sti.html_Table_row,
    sti.html_table_column
    LOOP
    varSelect := varSelect || ', ' || varTempQuery.field_name;
    END LOOP;
              varFrom := 'FROM     RIX.SUBJECTS';
              varWhere := 'WHERE STUDY_ID = ' || TRIM(LOWER(TO_NUMBER(:P21_STUDY_ID )));
              varOrderBy := 'ORDER BY';
              varOrderBy := varOrderBy || ' subject_label ';
    varQuery := varSelect || ' ' || varFrom || ' ' || varWhere || ' ' || varOrderBy;
         ELSE
    varQuery := 'SELECT SUBJECT_ID FROM SUBJECTS WHERE study_id = :P21_STUDY_ID;';
         END IF;
    RETURN varQuery;
    END;
    When I run the page now, the textarea has the SQL statement generated from the first IF block, but the report using the statement from the ELSE block. I thought it maybe was a timing issue, but both blocks reference other fields on the page, so it doesn't seem to be a timing issue. Shouldn't be a condition issue either with the IF block as the textarea and report use the same source, but are evaluating differently.
    Very odd (to me at least).

  • Problem with empty report parameters when passed to PL/SQL function

    Hi,
    We have come across what appears to be a bug in the JRC. When passing a report parameter to a PL/SQL function as a parameter, empty parameters are changed before being sent to the function. More specifically, an empty string "" ends up as the value "(')" in the PL/SQL function parameter. In our report we print the report parameters on the first page so we know that the parameters are OK before being passed to the database.
    The problem exists for version 12.2.203, 12.2.204 and 12.2.205 of the JRC.
    We have identified a workaround, but it is not exactly elegant: Before executing the report we modify all empty  parameters ("") to " " . In the PL/SQL function, we trim all parameters before using them.
    We call the function using a command object with a sql syntax like this example:
    select * from table (qa_batch_release.get_qa_br('{?p_report_id}','{?p_reg_set_number}','{?p_cr_number}','{?p_change_id_decode}','{?p_country_id}','{?p_mfg_item_no}','{?p_4_no}','{?p_5_no}','{?p_7_no}'))
    The PL/SQL function is a table returning function.
    Best regards, Thor

    Hi Kishore,
    using #COLUMN_VALUE# would probably not make much sense, because normally a report has multiple columns and not just the numeric column which you want to verify if it's negative. But APEX will fire the template condition for each column, because the report template is a column cell template.
    What you can do to make it more generic is to use for example
    #CHECK_AMOUNT#
    in the template and provide a not displayed column in your SQL statement which contains your value which is named CHECK_AMOUNT. For example:
    SELECT NAME
         , BALANCE
         , BALANCE AS CHECK_AMOUNT
    FROM XXX;Because this CHECK_AMOUNT column would be a generic name, you can use this template in all your reports as long as you provide this column.
    Thope that helps
    Patrick

  • Pass a value from a PL/SQL function to a javascript (html header) ? ?

    Hey Guys,
    Have a question regarding how to pass a value from a PL/SQL function to a javascript in the HTML Header.
    I have created a PL/SQL function in my database, which does looping.
    The reason for this is:  On my apex page when the user selects a code, it should display(or highlight buttons) the different project id's present for that particular code.
    example= code 1
    has project id's = 5, 6, 7
    code 2
    has project id's = 7,8
    Thank you for your Help or Suggestions
    Jesh
    The PL/SQL function :
    CREATE OR REPLACE FUNCTION contact_details(ACT_CODE1 IN NUMBER) RETURN VARCHAR2 IS
    Project_codes varchar2(10);
    CURSOR contact_cur IS
    SELECT ACT_CODE,PROJECT_ID
    FROM ACTASQ.ASQ_CONTACT where ACT_CODE = ACT_CODE1;
    currec contact_cur%rowtype;
    NAME: contact_details
    PURPOSE:
    REVISIONS:
    Ver Date Author Description
    1.0 6/25/2009 1. Created this function.
    BEGIN
    FOR currec in contact_cur LOOP
         dbms_output.put_line(currec.PROJECT_ID || '|');
         Project_codes := currec.PROJECT_ID|| '|' ||Project_codes;
    END LOOP;
    RETURN Project_codes;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    NULL;
    WHEN OTHERS THEN
    -- Consider logging the error and then re-raise
    RAISE;
    END contact_details;
    /

    Jesh:
    I have made the following modifications to your app to get it to work as I thing you need it to.
    1) Changed the source for the HTML Buttons Region(note use of id vs name for the Buttons)
    <script>
    function hilitebtn(val) {
    //gray buttons
    $x('graduate').style.backgroundColor='gray'
    $x('distance').style.backgroundColor='gray'
    $x('career').style.backgroundColor='gray'
    $x('photo').style.backgroundColor='gray'
    //AJAX call to get project-ids
    var get = new htmldb_Get(null,$x('pFlowId').value,'APPLICATION_PROCESS=GETPROJECTS',0);
    get.addParam('x01',val)
    gReturn = get.get();
    var arr=gReturn.split(':');  //dump into array
    get = null;
    for (i=0;i<arr.length;i++) {
    // alert('val=' + arr);
    if ( arr[i]==5)
    $x('graduate').style.backgroundColor='red';
    if ( arr[i]==6)
    $x('distance').style.backgroundColor='red';
    if ( arr[i]==7)
    $x('career').style.backgroundColor='red';
    if ( arr[i]==8)
    $x('photo').style.backgroundColor='red';
    </script>
    <table cellpadding='0' cellspacing='0' border='0'>
    <tr><td>
    <input type='button' id='graduate' value='Graduate'>
    </td>
    <td>
    <input type='button' id='distance' value='Distance'>
    </td>
    <td>
    <input type='button' id='career' value='Career/Tech'>
    </td>
    <td>
    <input type='button' id='photo' value='Photos'>
    </td>
    </tr></table>
    2) Defined the application process  GETPROJECTS as DECLARE
    IDS varchar2(1000);
    l_act_code varchar2(100) :=4;
    begin
    IDS:='';
    l_act_code := wwv_flow.g_x01;
    for x in(
    SELECT ACT_CODE,PROJECT_ID
    FROM ASQ_CONTACT
    where ACT_CODE = l_act_code)
    LOOP
    IDS := IDS || X.PROJECT_ID|| ':' ;
    END LOOP;
    HTP.PRN(IDS);
    END;
    3) Changed the 'onchange' event-handler on p1_act_code to be 'onchange=hilitebtn(this.value)'
    4) Added the JS to the HTML Page Footer <script>
    hilitebtn($v('P1_ACT_CODE'));
    </SCRIPT>

  • Is it possible to retrieve RAD's extended variables with a pl/sql function?

    Good morning everyone,
    We have our forms and reports(10g) application, SSO enabled and we are using OID on 10g app server. some of our users use smart card to log in to the system and some who do not have smart cards provide their database userid, password and SID.
    In the case of users who login with smart card, as a one time effort, they have to register their smart card. At that point OID presents a form prompting for their username, password, sid and then a RAD record is created for that particular user.
    And from then on when the user enters the system using his smart card(12345@mil), forms servlet, does the look up of dbusername,dbpswd,sid which belong to the 12345@mil and user's database credentials are passed to the application. The entire application logic is based on that userid which is also an internal userid in the application. Everything is working fine.
    I have read the documentation and found that 12345@mil is stored in the "cn" parameter and the orclownerguid and orclusernameattribute are stored under "cn"=extended properties in the oid. I am able to see this from the oid console.
    But now I need some help. If I only know the id of the user as "12345@mil" , is it possible to manually query the RAD and retrieve the orclusername from a pl/sql function?
    Any help is greatly appreciated.
    Regards,
    Suma.

    Please can anyone help me????
    Regards,
    Suma.

Maybe you are looking for