Any function in SQL or PL/SQL

how the occurance-position of a particular character in a given string can be extracted with in a pl/sql block or procedure. is there any function available to do so.

Maybe the INSTR function.
See http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96540/functions55a.htm#SQLRF00651
how the occurance-position of a particular character
in a given string can be extracted with in a pl/sql
block or procedure. is there any function available
to do so.

Similar Messages

  • SQL Query (PL/SQL Function Body returning SQL query) doesn't return any row

    I have a region with the following type:
    SQL Query (PL/SQL Function Body returning SQL query).
    In a search screen the users can enter different numbers, separated by an ENTER.
    I want to check these numbers by replacing the ENTER, which is CHR(13) || CHR(10) I believe, with commas. And then I can use it like this: POD IN (<<text>>).
    It's something like this:
    If (:P30_POD Is Not Null) Then
    v_where := v_where || v_condition || 'POD IN (''''''''||REPLACE(''' || :P30_POD || ''', CHR(13) || CHR(10), '','')||'''''''''')';
    v_condition := ' AND ';
    End If;
    But the query doesn't return any rows.
    I tried to reproduce it in Toad:
    select * from asx_worklistitem
    where
    POD IN (''''||REPLACE('541449200000171813'||CHR(13) || CHR(10)||'541449206006341366', CHR(13) || CHR(10), ''',''')||'''')
    ==> This is the query that does't return any rows
    select (''''||REPLACE('541449200000171813'||CHR(13) || CHR(10)||'541449206006341366', CHR(13) || CHR(10), ''',''')||'''')
    from dual;
    ==> This returns '541449200000171813','541449206006341366'
    select * from asx_worklistitem
    where pod in ('541449200000171813','541449206006341366');
    ==> and when I copy/paste this in the above query, it does return my rows.
    So why does my first query doesn't work?
    Doe anyone have any idea?
    Kind regards,
    Geert
    Message was edited by:
    Zorry

    Thanks for the help.
    I made it work, but via the following code:
    If (:P30_POD Is Not Null) Then
    v_pods := REPLACE(:P30_POD, CHR(13) || CHR(10));
    v_where := v_where || v_condition || 'POD IN (';
    v_counter := 1;
    WHILE (v_counter < LENGTH(v_pods)) LOOP
    v_pod := SUBSTR(v_pods, v_counter, 18);
    IF (v_counter <> 1) THEN
    v_where := v_where || ',';
    END IF;
    v_where := v_where || '''' || v_pod || '''';
    v_counter := v_counter + 18;
    END LOOP;
    v_where := v_where || ')';
    v_condition := ' AND ';
    End If;But now I want to make an update of all the records that correspond to this search criteria. I can give in a status via a dropdownlist and that I want to update all the records that correspond to one of these POD's with that status.
    For a region you can build an SQL query via PL/SQL, but for a process you only have a PL/SQL block. Is the only way to update all these records by making a loop and make an update for every POD that is specified.
    Because I think this will have a lot of overhead.
    I would like to make something like a multi row update in an updateable report, but I want to specify the status from somewhere else. Is this possible?

  • Any Function in T-SQL thats similar to GREATEST() IN Orcl.

    Is there any Function in T-SQL thats similar to GREATEST() IN Orcl?
    Iam trying to find the greatest of two DATETIME datatype Fields in my 'select's.
    If there is no in built function, Whats the best approach?

    MKR,
    If you are using SS 2005, you could use the new operator UNPIVOT.
    Code Block
    DECLARE @MyTable table
    ( RowID int IDENTITY,
    Date1 datetime,
    Date2 datetime,
    Date3 datetime NOT NULL DEFAULT getdate()
    INSERT INTO @MyTable VALUES ( '2007/01/01', '2007/02/01', '2007/01/31' )
    INSERT INTO @MyTable VALUES ( '2007/10/10', '2007/11/01', DEFAULT )
    INSERT INTO @MyTable VALUES ( '2007/12/01', '2007/12/05', '2007/12/06' )
    SELECT
    a
    .RowID,
    a.Date1,
    a.Date2,
    a.Date3,
    b.Greatest
    FROM
    @MyTable
    AS a
    INNER JOIN
    SELECT
    RowID
    MAX([Value]) AS Greatest
    FROM
    @MyTable
    UNPIVOT
    [Value]
    FOR ColumnName IN ([Date1], [Date2], [Date3])
    ) AS unpvt
    GROUP BY
    RowID
    ) AS b
    ON a.RowID = b.RowID
    ORDER BY
    a
    .RowID
    -- OR
    SELECT
    a
    .*, b.Greatest
    FROM
    @MyTable
    AS a
    CROSS APPLY
    SELECT
    MAX(Value) AS Greatest
    FROM
    @MyTable
    UNPIVOT
    [Value]
    FOR ColumnName IN ([Date1], [Date2], [Date3])
    ) AS unpvt
    WHERE
    unpvt
    .RowID = a.RowID
    ) AS b
    ORDER BY
    a
    .RowID
    GO
    AMB

  • SQL Query (pl/sql function body returning Sql query)

    Hi All,
    I have created a region of "SQL Query (pl/sql function body returning Sql query)" type and it is working fine , but when I am migrating(export /import) this application from development to systest environment ,
    It gives error for this region :
    Error ERR-1101 Unable to process function body returning query.
    OK
    ORA-06550: line 1, column 52: PLS-00306: wrong number or types of arguments in call to 'FU_TRADE_REPORT_QUERY' ORA-06550: line 1, column 45: PL/SQL: Statement ignored
    Any pointer ...why this is happening.
    Thanks
    Dikshit

    If your function is a stored function that is called from within APEX (function body not coded into the app itself), have you made sure that the function has been created and compiles ok prior to installing your apex app.
    If there are some dependency issues between other PL/SQL units or database objects that are causing your function not to be compiled, you apex install will fail as you are trying to reference an uncompelled bit of pl/sql.
    Let me know how you get on
    Regards
    Duncan

  • SQL Query ( PL/SQL function body returning query ) page

    Hello Friends,
    I have a page with type SQL Query ( PL/SQL function body returning query ).
    I have written a pl/sql block that returns a sql query - select statment.
    Some times i am getting no data found error - does it got to do with the variable that stores the query .
    =======================
    ORA-06502: PL/SQL: numeric or value error: character string buffer too small
    Error ERR-1101 Unable to process function body returning query.
    OK
    =====================
    When the query is returned with records where exactly the records are stored is it in the variable declared in pl/sql block or with the Oracle Apex implicit cursor.
    Here's the pl/sql block ..
    The query is generated while the user is navigating through pages ..
    ====================
    declare
    l_return_stmt varchar2(32767);
    l_select varchar2(32000);
    l_from varchar2(32000);
    l_where varchar2(32000);
    l_order_by varchar2(32000);
    l_stmt_recordcount varchar2(32000);
    l_recordcount number ;
    begin
    l_select := 'select '||:P10_VARLIST1||:P10_VARLIST2||:P10_VARLIST3
    ||:P10_VARLIST4||:P10_VARLIST5;
    l_from := ' from '||:P10_RELATION;
    if length(:P10_WHERE) > 0 then
    l_where := ' where '||:P10_WHERE;
    else
    l_where := '';
    end if;
    if length(:P10_ORDER_BY) > 0 then
    l_order_by := ' order by '||:P10_ORDER_BY;
    else
    l_order_by := '';
    end if;
    l_return_stmt := l_select||l_from||l_where||l_order_by;
    :P10_STMT := l_return_stmt;
    return l_return_stmt;
    end;
    =============================
    Appreciate your help in this regard.
    thanks/kumar
    Edited by: kumar73 on Apr 22, 2010 6:38 AM

    It looks like the query string you are trying to pass back exceeds the 32K limit for a varchar. Where this is happening is kind of difficult to tell as it could be any number of points, and also depends on what you are passing into the process via page items.
    I would first try to establish what combination of page items causes this error to occur. Then, starting from the bottom and working your way backwards, I would start 'switching off' some of the items you use to build your query until it breaks again, thus establishing which part is leading to the error.
    Also, I'm not sure what :P10_STMT is doing (are you maybe using this for visiblity of the query created)?
    It looks like the query string you are trying to pass back exceeds the 32K limit for a varchar. Where this is happening is kind of difficult to tell as it could be any number of points, and also depends on what you are passing into the process via page items.
    I would first try to establish what combination of page items causes this error to occur. then, starting from the bottom and working your way backwards, I would start 'switching off' some of the items you use to build your query until it breaks again, thus establishing which part is leading to the error.
    Also, I'm not sure what :P10_STMT is doing (are you maybe using this for visiblity of the query created)?

  • SQL Query (PL/SQL function body returning SQL query) when using to_char

    we are trying to build a report page of Type SQL Query (PL/SQL function body returning SQL query).
    our query is so simple, we need to extract the month from the recording_date column.
    declare
    l_query varchar2(1000);
    begin
    l_query:='select to_char(recording_date,'MM')from re_productive';
    return l_query;
    end;
    but we are having the following problem for this query
    Function returning SQL query: Query cannot be parsed within the Builder. If you believe your query is syntactically correct, check the generic columns checkbox below the region source to proceed without parsing.
    (ORA-06550: line 4, column 42: PLS-00103: Encountered the symbol "MON" when expecting one of the following: . ( * @ % & = - + ; < / > at in is mod remainder not rem <> or != or ~= >= <= <> and or like between || multiset member SUBMULTISET_ The symbol ". was inserted before "MON" to continue.)
    Notes:
    1-the query is correct and it was tested under Toad and SQL Plus.
    2- we tried Use Generic Column Names (parse query at runtime only) option but we get the same problem.
    any quick help please.

    Hi
    You haven't escaped your quotes in the string. Try this...
    DECLARE
    l_query VARCHAR2(32767);
    BEGIN
    l_query:= 'select to_char(recording_date,''MM'') from re_productive';
    RETURN l_query;
    END;Cheers
    Ben

  • Sql query(PL/SQL function body return SQL query) with in(x,y,z) condition

    Hello,
    I've set up a region definition of type "SQL Query(PL/SQL function body return SQL query). In my query I make use of an "in" condition. When I populate :P755_INC_BARG_UNIT with a value of 0F (no quotes), I get the correct count. However, when I set :P755_INC_BARG_UNIT to 0F, 0E I get an invalid count. What do I have to set the page item to?
    When running the query in TOAD, and setting :P755_INC_BARG_UNIT to the string inside the brackets (0F, 0E) I get the proper count.
    The code I use is shown below. Any help would be appreciated,
    Alex.
    DECLARE
    v_sql VARCHAR2(32767);
    BEGIN
    SELECT count(*) "cnts",
    ''Faculty data file IDs missing in appt table'' "err_type"
    FROM hradmin.et_faculty_salary fs left outer join
    hradmin.appointments appt
    ON trim(fs.empl_id) = appt.emp_emp
    and appt.ear_activ <> ''Z''
    and appt.ear_type = ''F''
    and (appt.ear_class in (''A'',''B'',''C'',''D''))
    and appt.ear_bargunit in ( :P755_INC_BARG_UNIT )
    WHERE appt.emp_emp is null
    RETURN v_sql;
    END;

    Alex,
    try something like:
    DECLARE
    v_sql VARCHAR2(32767);
    BEGIN
    v_sql := <YOUR_SQL_STATEMENT_WITH_P755_INC_BARG_UNIT_IN_IT>;
    v_sql :=  REPLACE(v_sql, ':P755_INC_BARG_UNIT',:P755_INC_BARG_UNIT);
    RETURN v_sql;
    END; But before doing it read this:
    http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:210612357425
    After reading you will be able to find the best solution yourself.
    Lev

  • Wild card searching in sql squery (pl/sql function body returning......)

    Hi,
    I've a report based on a sql query (pl/sql function body returnin a sql query).
    One of the statements is
    select .. from ...
    where name_of_person = :P17_NAAM
    I like to built a wild card possibility (with like '%l%m%') to show all persons with in their name an l, and an m (after the l)
    how to modify this statement?
    any reaction will be appreciated.
    Leo

    Leo,
    If I understand you correctly, you want to let the user type the value without wild cards, and than to add them programmatically. If that's the case, here is what you can do:
    1. Create a new item, say P17_HIDDEN_NAAM, that will contain the actual search criteria
    2. Modify your pl/sql to:
    begin
      :p17_hidden_naam := null;
      for l_i in 1..length(:P17_NAAM)
      loop
        :p17_hidden_naam := :p17_hidden_naam || '%' || substr(:P17_NAAM, l_i, 1);
      end loop;
      :p17_hidden_naam := :p17_hidden_naam || '%';
      return
        'select ..
           from ...
          where name_of_person like :p17_hidden_naam';
    end;By the way, I think that it's much better to train your users to use wild cards than to do it in the program.
    Sima

  • Log Function behaving diffently in SQL vs Pl/SQL

    Hello
    This equation works OK in SQL but its implementation in PL/SQL throws an error:
    SELECT CAST(LOG(2,32) as FLOAT) FROM DUAL;
    Returns: 5
    vs
    x FLOAT := 0;
    x := CAST(LOG(2,32) as FLOAT) ;
    PLS-00382: expression is of wrong type
    Incidentally I ran into a situation where LOG(2,32) return 5 in SQL but returns 4 where formatted TRUNC(LOG(2,32),0)
    Any assistance would be appreciated

    [email protected] wrote:
    This is not so much specific to LOG function. More a so "rounding behavior" of SQLPLUS due to environment default settings.??? It has nothing to do with rounding. You'll get same PLS-00382 for pretty much any built-in function:
    SQL> declare
      2  x FLOAT := 0;
      3  begin
      4  x := CAST(LOG(2,32) as FLOAT) ;
      5  end;
      6  /
    x := CAST(LOG(2,32) as FLOAT) ;
    ERROR at line 4:
    ORA-06550: line 4, column 11:
    PLS-00382: expression is of wrong type
    ORA-06550: line 4, column 1:
    PL/SQL: Statement ignored
    SQL> declare
      2  x FLOAT := 0;
      3  begin
      4  x := CAST(POWER(2,32) as FLOAT) ;
      5  end;
      6  /
    x := CAST(POWER(2,32) as FLOAT) ;
    ERROR at line 4:
    ORA-06550: line 4, column 11:
    PLS-00382: expression is of wrong type
    ORA-06550: line 4, column 1:
    PL/SQL: Statement ignored
    SQL> declare
      2  x FLOAT := 0;
      3  begin
      4  x := CAST(mod(3,2) as FLOAT) ;
      5  end;
      6  /
    x := CAST(mod(3,2) as FLOAT) ;
    ERROR at line 4:
    ORA-06550: line 4, column 11:
    PLS-00382: expression is of wrong type
    ORA-06550: line 4, column 1:
    PL/SQL: Statement ignored
    SQL> Oracle still maintains two separate engines for SQL and PL/SQL. And the above bug is obviously related to that. Now same built-in function has separate implementation SQL and PL/SQL. In PL/SQL it is package STANDARD. At first I thought it is where bug manifests itself. However:
    SQL> SELECT CAST(sys.standard.LOG(2,32) as FLOAT) FROM DUAL;
    CAST(SYS.STANDARD.LOG(2,32)ASFLOAT)
                                      5
    SQL> So most likely bug is caused by FLOAT implementation in PL/SQL.
    SY.

  • Percentile & percentage function in SQL or PL/SQL ?

    Hi all,
    I was wondering if there is any
    Percentile or percentage functions in SQL or PL/SQL  to calculate ??
    I came across percentile_rank , but i didnt find really good example online .... so i wasnt sure if thats right function for calculating  percentile Any example will be great !!
    THank you so much !!!

    Thank you so much frank and tubby !! It just amazing to see so many powerful aggregate and anlytic functions are available in 11g.
    Here is the example data i was working on
    with x as (
    select '100' value_amt, '6' cnt  from dual union all
    select '200' value_amt, '5' cnt  from dual union all
    select '500' value_amt, '10' cnt  from dual union all
    select '700' value_amt, '12' cnt  from dual union all
    select '900' value_amt, '14' cnt  from dual )
    select * from x;
    I m trying to calucalte the column called "avg_value" by dividing " value_amt / cnt ". I was just wondering if i need to use any function to calculate
    Here is the column "avg_value" look like
    with y as (
    select '100' value_amt, '6' cnt, '16' avg_value  from dual union all
    select '200' value_amt, '5' cnt,  '40' avg_value from dual union all
    select '500' value_amt, '10' cnt, '50' avg_value from dual union all
    select '700' value_amt, '12' cnt,  '58.33'avg_value from dual union all
    select '900' value_amt, '14' cnt, '64.28' avg_value   from dual )
    select * from y;Thank you so much!! I really appriciate it !!

  • Is SQL Connection Function or API Availble in SQL Toolkit 2.2 (Urgent) ?

    Hello,
    I have build an application using LabWindows 2010 and SQL Toolkit 2.2. Is there any function or dll or api availble so that i do not want to make connection in control panel ODBC ?.
    Regards
    Umer
    Solved!
    Go to Solution.

    Hello,
    The manual for this toolkit might be a good reference for you: LabWindows/CVI SQL Toolkit Help
    There is a function called DBConnect, which allows you to connect to a database programmatically. The Help says:
    "Purpose: Opens a to a database system to allow execution of SQL statements. Calling DBConnect is equivalent to calling DBNewConnection and then DBOpenConnection"
    There's also a page in the help titled Connecting to a Database, which tells you more information about how to use DBConnect:
    "Use DBConnect to connect to a data source. The only parameter is a connection string, which must contain the data source or provider name and any other attributes the database requires. DBConnect returns a handle to the database connection that other functions in the toolkit use. Call DBDisconnect to close the database connection, passing in the database connection handle from DBConnect. The following code is a simplified version of the code found in connect.prj.
    int hdbc = 0; /* Handle to database connection. */
    int rescode; /*Result code. */
    /* Connect to CVI_Samples data source. */
    hdbc = DBConnect ("DSN=CVI Samples");
    if (hdbc <= 0) goto Error;
    /* Disconnect from database. */
    resCode = DBDisconnect (hdbc);
    if (resCode != DB_SUCCESS) goto Error;"
    Hope this helps.
    Taylor B.
    National Instruments

  • To_numer function return error in pl/sql

    Hello,
    I don't have a prob when running select to_number('1234.56') from dual, the numer contains digit decimal
    But this stm return error Invalid number in procedure unless I use to_number('1234.56','9999999.99')
    Please help me out.
    Do I have to set parameter in DB ?
    BTW: my NLS_NUMERIC_CHARACTER is set to '.,'
    Thanks.

    to_numer function return error in pl/sql
    hlthanh wrote:
    Hello,
    I don't have a prob when running select to_number('1234.56') from dual, the numer contains digit decimal
    But this stm return error Invalid number in procedure unless I use to_number('1234.56','9999999.99')
    Please help me out.
    Do I have to set parameter in DB ?
    BTW: my NLS_NUMERIC_CHARACTER is set to '.,'
    Thanks.Handle:      hlthanh
    Status Level:      Newbie
    Registered:      Mar 7, 1999
    Total Posts:      94
    Total Questions:      60 (38 unresolved)
    so many questions & so few answers.
    How SAD!

  • SQL query (pl/sql function body returning query) performance issue

    I create my report in building my sql instruction with ( SQL Query pl/sql function body returning sql query );
    My report take more than 20 seconds however if i did a cut and paste with the sql code in TOAD the same sql take 1 second.
    To try to discover the source of the problem; i take the sql generated by the function and i create another report ( sql query ) this new report take 2 seconds.
    My query is very big 25,000 characters with database link.
    What is the difference between SQL-quey and sql-query(pl/sql function body returning sql query)
    Thanks
    Marc

    Marc,
    Firstly...don't compare the timings from Toad, since often Toad only fetches the first few records for you (i.e. it pages them).
    Secondly....the database link could be a factor here, but without seeing your query it's too hard to say.
    Can you post the query somewhere (on a webserver say)?

  • SQL Query(PL/SQL Function Returning SQL Query)

    I am trying to write a dynamic report using SQL Query(PL/SQL Function Returning SQL Query).
    I can get the report to run but I need to concatinate some columns into one, seperated by a comma or a dash.
    I have tried select *****||','||***** alias
    also select *****||'-'||***** alias
    but I always get an error.
    Is there a way of doing this please
    Gus

    This is my full query
    declare
    v_query varchar2(4000);
    begin
    if :P63_TRAN_INFO = 2 THEN
    v_query := 'select
         A.FILENR,
         A.EXERCISENAME,
    A.STARTDATE,
    A.ENDDATE,
         A.UNIT,
    A.ACCADDRESSES, B.ADDRESS, B.ADDRESS_1, B.POST_CODE, B.TOWN,
         A.EXERCISEAREAS,
         A.TOTALVEHICLES,
    A.TOTALTROOPS+A.RNTOTALTROOPS+A.RAFTOTALTROOPS TOTALTROOPS,
    A.CAR, A.MINIBUS, A.HGV,
    A.NAMERANK, A.ADDRESS, A.ADDRESSI, A.ADDRESSII, A.POSTCODE,
    A.TRANSIT,
    A.INFOONLY
    from     BFLOG_AT A, BFLOG_ACCADDRESS B
    WHERE A.ACCADDRESSES = B.NAME
    AND A.STARTDATE >= :P63_START_DATE
    AND A.ENDDATE <= :P63_END_DATE
    AND A.AUTHORISED = 1
    AND A.INFOONLY = 1' ;
    END IF;
    RETURN v_query;
    END;
    This query runs ok, but if I try changing it to the code below with fields concatinated, then it fails
    declare
    v_query varchar2(4000);
    begin
    if :P63_TRAN_INFO = 2 THEN
    v_query := 'select
         A.FILENR,
         A.EXERCISENAME,
    A.STARTDATE,
    A.ENDDATE,
         A.UNIT,
    A.ACCADDRESSES||','||B.ADDRESS||','||B.ADDRESS_1||','||B.POST_CODE||','||B.TOWN ADDRESS,
         A.EXERCISEAREAS,
         A.TOTALVEHICLES,
    A.TOTALTROOPS+A.RNTOTALTROOPS+A.RAFTOTALTROOPS TOTALTROOPS,
    A.CAR, A.MINIBUS, A.HGV,
    A.NAMERANK, A.ADDRESS, A.ADDRESSI, A.ADDRESSII, A.POSTCODE,
    A.TRANSIT,
    A.INFOONLY
    from     BFLOG_AT A, BFLOG_ACCADDRESS B
    WHERE A.ACCADDRESSES = B.NAME
    AND A.STARTDATE >= :P63_START_DATE
    AND A.ENDDATE <= :P63_END_DATE
    --AND (A.EXERCISEAREAS LIKE "GAP, OA, OAL")
    --OR (A.EXERCISEAREAS LIKE "Harz")
    AND A.AUTHORISED = 1
    AND A.INFOONLY = 1' ;
    END IF;
    RETURN v_query;
    END;
    Cheers
    Gus

  • Function Overloading concept in PL/SQL

    hi all,
    do we have Function Overloading concept in PL/SQL? If so, how to implement it? can anybody help me out with an example?

    Yep.
    SQL> create or replace
      2  package test_package as
      3
      4     function blah(param IN NUMBER) return number;
      5     function blah(param IN DATE) return number;
      6     function blah(param IN VARCHAR2) return number;
      7
      8     -- or
      9
    10     function blah(param IN NUMBER) return date;
    11     function blah(param IN NUMBER) return varchar2;
    12     function blah(param IN NUMBER) return char;
    13
    14  end test_package;
    15  /
    Package created.

Maybe you are looking for

  • How to change color of DHTML sub menu list

    Hi all, In my application i am using DHTML submenu list. But I have to change the color of the menu list which is selected currently. In interactive report how to fix the column width , because if one column has big string it's going to the right sid

  • Sorting problem in report

    hi, i am facing an issue with sorting of the values of a report in dashboard. the report consists of 15 columns and retrieves around 5000 rows in total. the first column is of varchar datatype and is the ID(unique). the rest are numeric datatype colu

  • Terminal Default Location at / instead of ~/

    hello guys i have been having this issue for quite some days alredy. i cehcked my terminal settings but i dont see any option in it. whenever i open a terminal it defaults at / when runnins as user. till now i have been able to add 'cd ~/' in the .ba

  • Error when installing nw CE71

    Hi, I am installing NW CE71 and I have the following problem: An error occurred while processing option SAP NetWeaver CE Productive Edition > Installation Options > Standard System > Standard System( Last error reported by the step :Cannot create the

  • Raw converter canon eos 7d mk 2

    I have been a element user since version 7. 11 months ago i bought my update for the version 12.  1 months ago i bought the Canon 7d mk2, and the elements 12 can not konvert the camera rawfile.  Why not? Regards Poul