Formula column pl/sql

I have a sql statement in the report builder with groups defined. The field in the last group contains text. I need to concatenate all values in the group. I was attempting to use a formula column. Could someone please send me an example of the pl/sql that would accomplish this?
Thanks
Ruth

function CF_ULTIMO_MESFormula return Char is
tipo varchar2(50);
tamanho number;
nome varchar2(22);
begin
begin
     begin
select to_char(dt_referencia, 'mm')
into tipo
from salario_base_mensal
where nu_codigo = :nu_codigo
and nu_versao = :nu_versao
and nu_empresa = :nu_empresa
and nu_filial = :nu_filial
and dt_referencia = (select max(dt_referencia)
from salario_base_mensal
where nu_codigo = :nu_codigo
and nu_versao = :nu_versao
and nu_empresa = :nu_empresa
and nu_filial = :nu_filial);
exception
when others then
     tipo := null;
     return (tipo);
end;
tamanho:= length(:dt_referencia);
for c in 1..tamanho loop
     nome := nome||substr(:dt_referencia,c,1)||' ';
end loop;
return(nome);
end;
end;

Similar Messages

  • Using the 'LOG' Function in a Formula Column

    If I write the following SQL statement at the SQL prompt, it works :
    SELECT LOG(sal,10) FROM emp ; But, if I write a similar statement in the formula column of a report, then it does not work :
    SELECT LOG(sal,10)
    INTO x_variable
    FROM emp
    WHERE empno = :empno ;
    return (TRUE) ;
    It would be great if someone can help.

    Try This..
    In the formula columns pl/sql place the following:
    function cf_1Formula return number is
    num number;
    begin
    num := log(sal, 10);
    return ( num );
    end;
    -- cf_1 is the formula col name
    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by [email protected]:
    If I write the following SQL statement at the SQL prompt, it works :
    SELECT LOG(sal,10) FROM emp ; But, if I write a similar statement in the formula column of a report, then it does not work :
    SELECT LOG(sal,10)
    INTO x_variable
    FROM emp
    WHERE empno = :empno ;
    return (TRUE) ;
    It would be great if someone can help. <HR></BLOCKQUOTE>
    null

  • Can we use formula column in lexical parameter in sql query ...

    hi
    can we use formula column in lexical parameter in sql query ...
    as example
    i want to give
    select * from & c_table
    forumula
    function c_table
    if :p_sort = 1 then
    return 'dept'
    else
    return 'emp'
    end;
    c_table formula column
    is this possible ...
    i have such example in oracle apps reports
    if i try in ordinary report usinf emp table it show error ..
    how we can give formula column...
    please help me in this regard...
    Edited by: 797525 on Feb 20, 2012 9:31 PM

    thanks sir,
    iam not exactly saying select * from &c_table but some thing that like columns in select stmt also will be populated in user_parameters ,there are lot of table select.......from     mtl_demand md,     mtl_system_items msi,     mtl_txn_source_types     mtst,     mtl_item_locations loc     &C_source_from &C_from_cat
    &c_source_from and &c_from_cat formula column and there are defined at report level only ......
    pl/sql code &c_source_from is
    function C_source_fromFormula return VARCHAR2 is
    begin
    if :P_source_type_id = 2 then return(',MTL_SALES_ORDERS mkts');
    else if :P_source_type_id = 3 then return(',GL_CODE_COMBINATIONS gl');
    else if :P_source_type_id = 6 then return(',MTL_GENERIC_DISPOSITIONS mdsp');
    else if :P_source_type_id = 5 then
         if :C_source_where is null then
              return NULL;
         else
              return(',WIP_ENTITIES wip');
         end if;
    else if :P_source_type_id = 8 then return(',MTL_SALES_ORDERS mkts');
    else if :P_source_type_id is null then
    return(',MTL_SALES_ORDERS      mkts,
    MTL_GENERIC_DISPOSITIONS mdsp,
    GL_CODE_COMBINATIONS gl ');
    else null;
    end if; end if; end if; end if; end if; end if;
    RETURN NULL; end;
    this is forumula column i hope that you understand what iam saying
    please help me in this regard....
    thanking you...

  • Using PL/SQL in a formula column in Oracle Reports Builder.

    Hi,
    I need to SUM two record from the result of an SQL interrogation.
    Here's what it looks like
    function CF_1Formula return Number is
    nTot1 NUMBER :=0;
    nTot2 NUMBER :=0;
    begin
         select sum(:TOT1) into nTot1 from table(Q1) ;
         select sum(:TOT2) into nTot2 from table(Q1) ;
         return (nTot1 + nTot2);
    end;I'm kind of new to formula column programming any link of interest would be appreciated.
    The from table(Q1) part Q1 represents my SQL interrogation name and the group below it is G_MAIN.

    Hi Hong Kong King Kong,
    From looking at that function name (and the group name): Is this an Oracle Reports generated function?
    If so, there's also a dedicated Reports forum: Reports
    By the way, I like your synonym for 'query'.
    I'm sure I'll confuse some of my collegues tomorrow when I will mention 'database interrogation' instead of 'query'. ;)
    edit
    Doh...I should not underestimate the information that is posted in thread subjects.
    Edited by: hoek on May 5, 2010 9:24 PM

  • Dynamic SQL in Formula Column in OracleReports6i

    Following code is in formula column of my report. passing dynamic sql str1(actullay, this string comes from after parameter trigger form) into SQL and executing thru DBMS_SQL.PARSE function. it's failed with 'Fatal PL/SQL error occured' ...
    Coupld any one help me on this...
    function CF_1FORMULA0006 return Number is
    Credits1 NUMBER(10,2);
    str1 VARCHAR2(50) := 'AND b.PROGRAMID = 2 ';
    c1 INTEGER := dbms_sql.open_cursor;
    c2 INTEGER;
    begin
    begin
    dbms_sql.parse(c1,
    'SELECT NVL(SUM(a.AMOUNT),0) INTO Credits1' &#0124; &#0124;
    'FROM SPONSOR_TRAN_DATA a, SPONSOR b ' &#0124; &#0124;
    ' WHERE ' &#0124; &#0124;
    ' a.TRANTYPE = 41 ' &#0124; &#0124;
    ' AND a.SPONSORID = b.SPONSORID ' &#0124; &#0124;
    str1 &#0124; &#0124;
    'AND a.amount > 0 ' &#0124; &#0124;
    'AND a.timestamp >= :reportdate ' &#0124; &#0124;
    'AND a.timestamp < :reportdate + 1' ,2);
    c2 := dbms_sql.execute(c1);
    exception
    when no_data_found then
    Credits1 := 0;
    end;
    return Credits1;
    end;
    Thanks in advance......

    It looks like forms are not supporting text functions like FR yet, I gave it a try <<MemberName("<Formname>","<POV DIM Name>)>> in the formula header area and it didn't like it. It is just displaying what ever I typed in there.

  • How to add a formula column in a report

    Hi
    I have made a report based on a query.
    There are 3 columns in the query and all the 3 are displayed.
    Now I want to add a new column (fomula column) to the report.
    I want to write a query inside the formula column. To execute the query col1, col2 and col3 values are required in the formula column.
    Could you please tell me how to add a formula column in the report and how to pass database column value to inside the formula column
    regards

    Here is how you would create a formula column:
    Open data model of the report.
    Formula column button is on the left side of the tool palette.
    Click on that button.
    Now click in the query group where you want to place the formula column.
    You would see a new field something like CF_1. That is the formula column.
    Double click on the field CF_1. It will open property inspector.
    You would see, Datatype of the formula column is Number. Change this as per your requirement.
    Double click on PL/SQL Formula property. It would open up a editor. Here you can write the code.
    And now to access the data model column here, you can use : and column name. i.e. :col1 or :col2, etc
    And remember you have to return the value back to the formula column. Like this: RETURN(some value).
    You can also take a help from here:
    http://download.oracle.com/docs/html/B13895_01/orbr_howto.htm#sthref1309
    Hope this helps.

  • Formula Column help please - URGENT

    I'm trying to create a formula column as follows:
    function NO_REPLIESFormula return Number is
    NOREPLY number;
    begin
    SELECT COUNT(reply) INTO NOREPLY
    FROM letters
    WHERE reply = 'N'
    GROUP BY ltrtype, batch;
    RETURN (NOREPLY);
    end;
    This PL/SQL compiles fine, but when I run the report, I get the following messages:
    REP-1401 no_repliesformula FATAL PL/SQL error occured. ORA-01422 exact fetch returns more than requested number of rows.
    If I remove the GROUP BY ltrtype, batch, I don't get the error messages, but the result I get is the total no_replies instead of the total no_replies for each ltrtype/batch grouping.
    Could someone please help me with this?
    Thank you.

    Hi irish,
    I think i am not sure about what you are trying to say, but let me guess, You want the values to be return on the bases of "ltrtype, batch". Which mea that you want more then one values, i mean there can be more then one Groups based on ltrtype and batch. and you want to display these values with repective record???
    If i am right, then there is a fault in your code, and that is , you are not specifing in your code that which value is to be diplayed with which record in this report. For that there must be ltrtype, batch colums displayed in the report, you must add those values in your Code in the query, i.e.
    function NO_REPLIESFormula return Number is
    NOREPLY number;
    begin
    SELECT COUNT(reply) INTO NOREPLY
    FROM letters
    WHERE reply = 'N' and ltrtype= :V_ltrtype and batch=:v_batch;
    RETURN (NOREPLY);
    end;
    Where :V_ltrtype and :v_batch are the run time values of each records displayed in the report.
    Remember that if you don't sepecify this then your code will return as many records as many distich values of ltrtype, batch. and your variable NOREPLY can hold only one value at a time. I hope you understand both, Solution and the logic behind the error.
    Please correct me if i am wrong.
    Thanks.
    Mohib ur Rehman

  • Formula Column in Report 9i Builder

    Hi,
    I use this configuration
    Report Builder 9.2.0.1.0
    Windows XP Service Pack 1
    NLS_LANG "BRAZILIAN PORTUGUESE_BRAZIL.WE8ISO8859P1"
    When I try to create a formula column that returns number, I have to choose datatype 'Nu'mero' (with accented u)as this is the only avaiable in the combo box. However when I write this PL/SQL code for the column:
    function CF_17Formula return Number is
    begin
    RETURN(1);
    end;
    Reports gives me the message:
    REP-0737: Deve ser uma funcao com retorno do tipo 'nu'mero'.
    In English this message could be
    REP-0737: Should be a function with return type 'nu'mero'.
    I don't have this problem with Character or Date formula columns (these datatypes are called Caracter and Data in Portuguese).
    It seems that Reports is having problems with u' (accented u) character. If I change NLS_LANG to AMERICAN_AMERICA.WE8ISO8859P1 everything works fine because I can choose Number in the Formula Column Datatype in the Property Inspector.
    The problem is in the function declaration not in the Return statement.
    Could anyone help me? Tks.
    Edmar

    Edmar,
    You are right. I could reproduce this issue.
    I have filed a bug to fix it from the development in next patch
    Thanks
    The Oracle Reports Team

  • How to use a Formula Column in the main query?

    Hi All,
    I've tried to use a formula columns defined in some query in the condition of that query like this:
    where (:cf_ex - :cf_ex2) >= 5
    but when I run the report no data returned! Why? and how to use it the condition of the query?
    Note: I'm using Forms 6i

    where (:cf_ex - :cf_ex2) >= 5You cannot do that. Formula columns are not part of the select statement (which runs in the database), but are processed in the report.
    When you created this query, my guess is that you got the message "Note: the query Q1 has created the bind parameter(s) cf_ex, cf_ex2". Check these User Parameters in your data model. So, you are actually referencing user parameters in the query, not formula columns.
    I made a computations and things using PL/SQL that can't be done in the select statement in the data model!If it's pl/sql you can probably use that in your query. Create some database functions for cf_ex and cf_ex2 and use these in your query.

  • Report output order by formula column value? pls.urgent

    hi.
    i have one query select empno,ename, sal from emp. in report layout i created a formula column named as net_sal(in which am doing some calculation based on some criteria). now i want to print the report order by net_sal desc.
    how can i solve it? since the calculation is being done on runtime only/
    pls. help me. urgent

    Puedes hacer lo sigte.:
    En el SQL QUERY STAMENT
    select empno, ename, sal, :net_sal
    from emp
    order by 4 asc/desc

  • How to create formulas in an SQL statement

    Hello,
    I am trying to create a formula in an sql statement without creating a external function.
    Here is my example :
    select (x + y) as a,
    (x + y) + 2
    from dual
    As you can see the formula “(X + Y)” is repeated.
    I would be glad to write a select statement like that :
    select (x + y) as a,
    a + 2
    from dual
    any ideas?
    Thanks

    I have a nasty feeling there is in XQuery expressions, but I'm not going there. ;-)
    michaels>  WITH t AS
         (SELECT 1 ID, 1 x, 2 y FROM DUAL UNION ALL
          SELECT 2,    3,   4   FROM DUAL UNION ALL
          SELECT 3,    5,   6   FROM DUAL)
    SELECT   *
        FROM XMLTable('declare function local:a($a,$b)
                         ($a + $b)
                       }; (: eof :)
                       for $i in /ROWSET/ROW
                       return <ROW>
                              <ID>{$i/ID}</ID>
                              <X>{$i/X}</X>
                              <Y>{$i/Y}</Y>
                              <A>{local:a($i/X,$i/Y)}</A>
                              <B>{local:a($i/X,$i/Y) + 2}</B>
                              </ROW>' PASSING XMLTYPE(CURSOR(SELECT * FROM t))
                       COLUMNS ID NUMBER PATH 'ID',
                                X NUMBER PATH 'X',
                                Y NUMBER PATH 'Y',
                                A NUMBER PATH 'A',
                                B NUMBER PATH 'B'
            ID          X          Y          A          B
             1          1          2          3          5
             2          3          4          7          9
             3          5          6         11         13

  • Formula Column in Matrix Report (Running Balance)

    Hi all. I hope somebody can help me.
    I am working on a matrix report using multi-query data models. The report has 2 groups in the horizontal axis and 3 groups in the vertical axis. The intersection is not just a single row but may consist of multiple rows.
    My problem is this. I want to create a column in the intersection which is obtained by using a column value from the lowest group in the vertical axis and a summary column obtained from the rows of the intersection.
    Here's what my report looks like:
    2002 (accross)
    2002(down) january february (accross)
    January (down) payments balance payments balance
    loan #1 10,000 500 9,000 200 8,800
    500
    loan #2 5,000 100 4,900 200 4,700
    February
    loan #3 3,500 0 3,500 50 3,450
    loan #4 4,200 0 4,200 0 4,200
    As you can see, the loans are grouped by month and year. And the payments are grouped for the month and year too.
    The data model is :
    For Query 1 (Vertical Axis),
    1st group - Loan Yr
    2nd group - Loan Mo
    3rd group - Loan # and amount
    For Query 2 (Horizontal Axis)
    1st group - Payment Yr
    2nd group - Payment Mo
    Intersection Group - Payment Amount
    My problem actually is how to compute for the running balance of the loan for each month in the horizontal axis. Ive already created a cross product summary to get the running total of the payments made for the month. I tried creating a formula column to for the running balance by subtracting it from the loan amount but i get the error "incompatible frequency"
    I hope i have described my problem well and thanks for the help

    The problem is that you're trying to reference dimension columns(loan Amount) in the calculation of matrix cell values. You can only reference other matrix cell values or cross product columns (summary, formula, placeholders) when calculating matrix cell values. Try moving the (loan Amount) column down to the matrix cell - something like:
    For Query 1 (Vertical Axis),
    1st group - G_LoanYear(LoanYr)
    2nd group - G_LoanMonth(LoanMo)
    3rd group - G_LoanNumber(Loan#)
    For Query 2 (Horizontal Axis)
    1st group - G_PaymentYear(PaymentYr)
    2nd group - G_PaymentMonth(PaymentMo)
    Intersecion /Detail Group - G_Details(PaymentAmount, LoanAmount)
    Then create the following Matrix summary columns:
    A running summary - CS_Payments:
    - Product Order: G_LoanYear G_LoanMonth G_LoanNumber G_PaymentYear G_PaymentMonth
    - Source: PaymentAmount
    - Function: Sum
    - Reset At: G_LoanNumber
    The total amount per loan - CS_TotalPayment:
    - Product Order: G_LoanYear G_LoanMonth G_LoanNumber
    - Source: LoanAmount
    - Function: First
    - Reset At: G_LoanNumber
    The value of the loan after each payment - CF_Countdown:
    - Product Order: G_LoanYear G_LoanMonth G_LoanNumber G_PaymentYear G_PaymentMonth
    - PL/SQL Formula:
    function CF_CountdownFormula return Number is
    begin
    return(:CS_TotalPayment - :CS_Payments);
    end;
    You should then be able to display "CF_Payments" and "CF_Countdown" in the matrix cell to show how much has been paid and how much is still owed.
    You can still have another "loan amount" as a dimension column - you just don't need to use it when calculating the values in the cell.

  • Function not callable in formula column..

    Hi,
    I am getting one strange problem..when i call one function in a sql statment in report builder 6i from a formula column, it gives error that this function can not be called from sql but when i run the same sql from plsql dev, it runs fine..Oracle version 9i..
    Plz help..

    Hi,
    This is the code block used in the formula column..The formula cloumn datatype is character and size is 15..
    function FML_INT_LABLEFormula return Char is
    l_int_lable varchar2(15);
    begin
    select (DBK_C_ADVICES.DBF_C_RET_ADV_TEXT(:PRM_BRCH_CODE, NVL(:PRM_PROD_CODE,' '),'R01',1)||' Rate')into l_int_lable from dual ;
    RETURN(l_int_lable);
    end;

  • Can formula column values be used as parameters

    Post Author: vdm
    CA Forum: Formula
    Hi,
    I have various formula columns setup in my crystal report, these formula columns act as prompts when end users run the report. i am using crystal reports xi and sql server databse.
    Now I would like to use these formula columns to restrict my result set. basically, these should act as predicates (where clauses) to my query.
    Is there a way to pass formula columns as parameters to stored procedures or to commands or to simpy add them to a sql query ?
    thanks in advance

    Post Author: foghat
    CA Forum: Formula
    Have you tried adding the formula fields as a filter in the Record Selection Formula editor?So  Report --> Selection Formulas --> Recordand add: {database.field_a} = and {database.field_b} = and so on 

  • Using In operator in Formula Column,URGENT!!!!!!!!!

    Hi...
    I want to ask if I have a formula Column(REPORTS 6i),and I want in where condition using parameter to some condition as this example:
    function CF_1Formula return Number is
    S NUMBER(10);
    begin
    SELECT SUM(SAL) INTO S FROM EMP
    WHERE DEPTNO IN (:DEPT);
    RETURN(S);
    end;
    Where :DEPT is user parameter of char Datatype and it is value 10,20 and may be 10,30,40
    and so on.
    on runtime the sql will be:
    SELECT SUM(SAL) INTO S FROM EMP
    WHERE DEPTNO IN (10,20);
    but this not work.So what is the correct way to deal with this sql stat.,
    and :dept always have different values.
    So PLS any ONE help me ASAP

    Something like this will work (10g onwards)
    SQL> ed
    Wrote file afiedt.buf
      1  with req as (select '&required_empnos' as empno from dual)
      2  --
      3  select *
      4  from emp
      5  where empno in
      6    (select regexp_substr(empno, '[^,]+', 1, rownum)
      7     from req
      8*    connect by rownum <= length(regexp_replace(empno, '[^,]'))+1)
    SQL> /
    Enter value for required_empnos: 7839,7499,7934
    old   1: with req as (select '&required_empnos' as empno from dual)
    new   1: with req as (select '7839,7499,7934' as empno from dual)
         EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
          7839 KING       PRESIDENT            17-NOV-81       5000                    10
          7934 MILLER     CLERK           7782 23-JAN-82       1300                    10
          7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
    SQL>

Maybe you are looking for