Rate of return query

Hi Everyone,
I have another question that I need help with. I am generating a query that will compare how many items have been delivered and how many have been returned in a given time period, then display the % returned from that time period.
The problem I am facing is that our returns and credit memo process do not require that a return document be linked directly to a delivery document. So I believe I need a UNION statement. I am encountering some errors and would greatly appreciate any help to get this working. I'm still learning SQL so please let me know what I am doing wrong:
SELECT T0.[ITEMCODE], NULL AS 'Delivered', sum(T0.[Quantity]) AS 'Returned'
FROM RDN1 T0
INNER JOIN ORDN T1 on T0.DocEntry = T1.DocEntry
WHERE T1.[DocDate] >=[%0] and  T1.[DocDate] <=[%1]
UNION
SELECT T2.[ITEMCODE], sum(T2.[Quantity]) AS 'Delivered', NULL AS 'Returned'
FROM ODLN T3
INNER JOIN DLN1 T2 on T2.DocEntry = T3.DocEntry
WHERE T3.[DocDate] >=[%0] and  T3.[DocDate] <=[%1]
GROUP BY T2.[ITEMCODE], 'Delivered', 'Returned'

Hi Alfonso,
Try this:
Select A.ItemCode,Case When A.Seq=2 Then A.Delivered Else 0 End as Delivered,Case When A.Seq=1 Then A.Returned end as Returned
FROM
SELECT 1 as Seq,T0.[ITEMCODE], NULL AS 'Delivered', sum(T0.[Quantity]) AS 'Returned'
FROM RDN1 T0
INNER JOIN ORDN T1 on T0.DocEntry = T1.DocEntry
WHERE T1.[DocDate] >=[%0] and  T1.[DocDate] <=[%1]
GROUP BY T0.[ITEMCODE], T0.Quantity
UNION
SELECT 2 as Seq,T2.[ITEMCODE], sum(T2.[Quantity]) AS 'Delivered', NULL AS 'Returned'
FROM ODLN T3
INNER JOIN DLN1 T2 on T2.DocEntry = T3.DocEntry
WHERE T3.[DocDate] >=[%0] and  T3.[DocDate] <=[%1]
GROUP BY T2.[ITEMCODE], T2.Quantity
)A
Regards,
JP

Similar Messages

  • 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)?

  • How to include OSTC.rate in this query

    How to include OSTC.rate in this query,Im using it for crystal report.
    DECLARE @sVAT NVARCHAR(max) 
    DECLARE @sCess NVARCHAR(max) 
    DECLARE @sCST NVARCHAR(max) 
    DECLARE @nDocentry  INT 
    SET @sVAT='1'  SET @sCess='7' SET @sCST ='4'
    SELECT DocEntry
      ,DocDate,VehicleNo,Driver,NumAtCard
      ,Building,Block,Street,City,District,State,Country
      ,Series,DocNum
      ,BTinNo,BCstNo,BCeRegNo,BPanNo,BCeRange,BCeComRate,BCeDivision,BEccNo
      ,Type
      ,CardName,[Delivery Addr]
      ,ECCNo,CERange,CERegNo,CEDivis,CEComRate
      ,PAN,CST,STN
      ,[Deliver At]
      ,LineNum
      ,Dscription,HSNumber,Quantity,Rate,LineTotal,Discount,Vat [VAT],Cess [Cess],Total,GTotal
      ,TotalExpns
      ,MfgName
      ,MFGBuilding,MFGBlock,MFGStreet,MFGDistrict,MFGCity
      ,MCERegNo,MCERange,MCEDivis,MCEComRate,MPAN,MCST,MSTN
      ,SupName
      ,SUPBuilding,SUPBlock,SUPStreet,SUPDistrict,SUPCity
      ,SCERegNo,SCERange,SCEDivis,SCEComRate,SPAN,SCST,SSTN
      , (select substring((select upper(name)+',' from OUBR where isnull(U_SeriesGrp,'')<>'' order by Code FOR XML PATH ('')),1,LEN((select upper(name)+',' from OUBR order by Code FOR XML PATH ('')))-1))[Branches]
    FROM
    SELECT
      /*OBTN.DistNumber*/
      INV1.DocEntry
      ,OINV.DocDate,OINV.U_VehicleNo VehicleNo,OINV.U_Driver Driver,OINV.NumAtCard
      ,CAST(OLCT.Building AS VARCHAR(255))Building,OLCT.Block,OLCT.Street,OLCT.City,OLCT.County+' - '+OLCT.ZipCode[District],OCST.Name State,OCRY.Name Country
      , NNM1.SeriesName [Series], OINV.DocNum
      ,OLCT.TinNo [BTinNo],OLCT.CstNo [BCstNo],OLCT.CeRegNo [BCeRegNo],OLCT.PanNo [BPanNo],OLCT.CeRange [BCeRange]
      ,OLCT.CeComRate [BCeComRate],OLCT.CeDivision [BCeDivision],OLCT.EccNo [BEccNo]
      ,OBTN.U_InvType Type
      ,OINV.CardName,OINV.Address2[Delivery Addr]
      ,CE_CRD7.ECCNo,CE_CRD7.CERegNo,CE_CRD7.CERange,CE_CRD7.CEDivis,CE_CRD7.CEComRate
      ,CRD7.TaxId0[PAN],CRD7.TaxId1[CST],CRD7.TaxId11 [STN]
      ,OINV.U_Address [Deliver At]
      ,INV1.LineNum,INV1.ItemCode
      ,INV1.Dscription,OITM.SWW [HSNumber]
      ,INV1.Quantity,INV1.PriceBefDi Price,INV1.LineTotal,INV1.Price Rate,(INV1.PriceBefDi-INV1.Price)*INV1.Quantity Discount
      ,INV4.Vat
      ,INV4.Cess
      ,INV1.LineTotal+INV1.VatSum Total 
      ,OINV.DocTotal GTotal
      ,OINV.TotalExpns
      ,OBTN.U_MfgName MfgName
      ,convert(nvarchar(250),MFG_CRD1.Building) MFGBuilding,MFG_CRD1.Block MFGBlock,MFG_CRD1.Street MFGStreet,MFG_CRD1.City MFGCity,MFG_CRD1.ZipCode[MFGDistrict]
      ,OBTN.U_MCERegNo MCERegNo,OBTN.U_MCERange MCERange,OBTN.U_MCEDivis MCEDivis,OBTN.U_MCEComRate MCEComRate
      ,OBTN.U_MPAN MPAN,OBTN.U_MCST MCST,OBTN.U_MSTN MSTN
      ,OBTN.U_SupName SupName
      ,convert(nvarchar(250),SUP_CRD1.Building) SUPBuilding,SUP_CRD1.Block SUPBlock,SUP_CRD1.Street SUPStreet,SUP_CRD1.City SUPCity,SUP_CRD1.ZipCode[SUPDistrict]
      ,OBTN.U_SCERegNo SCERegNo,OBTN.U_SCERange SCERange,OBTN.U_SCEDivis SCEDivis,OBTN.U_SCEComRate SCEComRate
      ,OBTN.U_SPAN SPAN,OBTN.U_SCST SCST,OBTN.U_SSTN SSTN
    FROM
      OINV
      INNER JOIN INV1 ON OINV.DocEntry=INV1.DocEntry
      INNER JOIN OITM ON INV1.ItemCode=OITM.ItemCode
      INNER JOIN 
      select
      INV4.DocEntry,INV4.LineNum
      ,CASE WHEN INV4.staType IN (@sVAT,@sCST) THEN sum(INV4.TaxSum) ELSE 0 END Vat
      ,CASE WHEN INV4.staType=@sCess THEN sum(INV4.TaxSum) ELSE 0 END Cess
      from
      INV4
      where
      INV4.DocEntry={?DocKey@} and INV4.RelateType=1
      group by INV4.DocEntry,INV4.LineNum,INV4.staType
      )INV4 ON INV1.DocEntry=INV4.DocEntry AND INV1.LineNum=INV4.LineNum
      INNER JOIN OLCT ON INV1.LocCode=OLCT.Code
      INNER JOIN OCST ON OLCT.State=OCST.Code
      INNER JOIN OCRY ON OLCT.Country=OCRY.Code and OCST.Country=OCRY.Code
      INNER JOIN INV12 ON OINV.DocEntry=INV12.DocEntry
      INNER JOIN OITL ON INV1.BaseType=OITL.ApplyType AND INV1.BaseEntry=OITL.ApplyEntry AND INV1.BaseLine=OITL.ApplyLine
      INNER JOIN ITL1 ON OITL.LogEntry=ITL1.LogEntry
      INNER JOIN OBTN ON ITL1.MdAbsEntry=OBTN.AbsEntry and ITL1.SysNumber=OBTN.SysNumber and ITL1.ItemCode=OBTN.ItemCode
      LEFT JOIN OCRD MFG_OCRD ON MFG_OCRD.CardCode=OBTN.U_MfgCode
      LEFT JOIN CRD1 MFG_CRD1 ON MFG_OCRD.CardCode=MFG_CRD1.CardCode AND MFG_OCRD.BillToDef=MFG_CRD1.Address and MFG_CRD1.AdresType='B'
      LEFT JOIN OCRD SUP_OCRD ON SUP_OCRD.CardCode=OBTN.U_SupCode
      LEFT JOIN CRD1 SUP_CRD1 ON SUP_OCRD.CardCode=SUP_CRD1.CardCode AND SUP_OCRD.BillToDef=SUP_CRD1.Address and SUP_CRD1.AdresType='B'
      LEFT JOIN NNM1 ON OINV.Series=NNM1.Series
      LEFT JOIN CRD7 ON OINV.CardCode=CRD7.CardCode AND CRD7.Address='' AND CRD7.AddrType='S' --Tax Details
      LEFT JOIN CRD7 CE_CRD7 ON OINV.CardCode=CE_CRD7.CardCode AND OINV.ShipToCode=CE_CRD7.Address AND CE_CRD7.AddrType='S' -- Central Excise Details
      WHERE
      INV1.DocEntry={?DocKey@}
    )INVOICE
    GROUP BY
      DocEntry
      ,DocDate,VehicleNo,Driver,NumAtCard
      ,Building,Block,Street,City,District,State,Country
      ,Series,DocNum
      ,BTinNo,BCstNo,BCeRegNo,BPanNo,BCeRange,BCeComRate,BCeDivision,BEccNo
      ,Type
      ,CardName,[Delivery Addr]
      ,ECCNo,CERange,CERegNo,CEDivis,CEComRate
      ,PAN,CST,STN
      ,[Deliver At]
      ,LineNum
      ,Dscription,HSNumber,Quantity,Rate,LineTotal,Discount,Vat,Cess,Total,GTotal
      ,TotalExpns
      ,MfgName
      ,MFGBuilding,MFGBlock,MFGStreet,MFGDistrict,MFGCity
      ,MCERegNo,MCERange,MCEDivis,MCEComRate,MPAN,MCST,MSTN
      ,SupName
      ,SUPBuilding,SUPBlock,SUPStreet,SUPDistrict,SUPCity
      ,SCERegNo,SCERange,SCEDivis,SCEComRate,SPAN,SCST,SSTN

    You're double posting ( how to change join condition in this query ) , stop doing that, since you'll only be distracting and diverting by doing so.
    Take the time to read the SQL and PL/SQL FAQ @ https://forums.oracle.com/forums/ann.jspa?annID=1535, since you're not even mentioning a database version, while 9i {noformat} != {noformat} 10g {noformat} != {noformat}11g...
    Have your DBA trace/tkprof the query, and so on, if you cannot do that yourself.
    And then provide the feedback the volunteers, including Ace (Directors)' s need ( and you were very lucky, from that point of view, I think, from looking at both your posts ;) )

  • Server does not return query metadata check the query

    hi,
    i want know how to  use bex query designer,
    when i  insert a data provider,the message is appear "server does not return query metadata check the query",
    who can help me ?
    thanks a lot !
    addition: my current entironment is: gui710 with sp4,bi710 with sp2.

    Hi,
    All the yellow and red lights will have an effect on query performance or execution.  Read up on them as there are too many to explain via this forum.
    There is a document on SDN on query performance.  Some useful links:
    [https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/9f4a452b-0301-0010-8ca6-ef25a095834a]
    [http://help.sap.com/saphelp_nw70/helpdata/en/41/b987eb1443534ba78a793f4beed9d5/frameset.htm]
    [http://help.sap.com/saphelp_nw70/helpdata/en/d9/31363dc992752de10000000a114084/frameset.htm]
    [http://help.sap.com/saphelp_nw04/helpdata/en/2e/caceae8dd08e48a63c2da60c8ffa5e/frameset.htm]
    [https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e0501cb9-d51c-2a10-239c-c141a22c45a6]
    Cheers...

  • PL/SQL Function Returning Query Error / ORA-01858: a non-numeric char.....

    I'm trying to write a PL/SQL function to dynamically return a query with varying # of columns. I've done this type of thing before wiith much success, however this is the first time I'm using a cursor for loop within a function to accomplish my task.
    here is the error I get:
    ORA-01858: a non-numeric character was found where a numeric was expected
    Error ERR-1101 Unable to process function body returning query.
    Mind you I have tested the PL/SQL from a SQL editor and it works fine. I'm confused.
    Code is below.
    Thanks in advance!
    DECLARE
    my_query varchar2(4000);
    string1 varchar2(50) := 'select city, ';
    string2 varchar2(4000) := '' ;
    string3 varchar2(4000):= 'from
    ( select a.title, a.city, a.start_date, sum(a.total_stu) cnt
    from sj_class_summary3 a
    group by a.title, a.city, a.start_date
    having a.title = :P4_COURSE )
    group by title, city';
    TYPE date_tab_type IS TABLE OF date INDEX BY PLS_INTEGER;
    date_tbl date_tab_type;
    i number;
    BEGIN
    i:=1;
    for myrec in (select distinct start_date from sj_class_summary3
    where start_date between :P4_START_DATE and :P4_END_DATE order by 1) loop
    date_tbl(i) := myrec.start_date;
    string2 := string2 || ' max( decode( start_date, ''' || date_tbl(i) || ''', cnt,0) ) "' || date_tbl(i) || '", ';
    i := i+ 1;
    end loop;
    string2 := SUBSTR(string2,1,LENGTH(string2)-2);
    string2 := string2 || ' ';
    my_query := string1 || string2 || string3;
    return my_query;
    END;

    Hi Bob,
    you also have another date to character to date conversion in:
    decode( start_date, ''' || date_tbl(i) || ''', cnt,0)
    does this need to be:
    decode( start_date, to_date(''' || to_char(date_tbl(i), 'dd/mm/yyyy') || ''', ''dd/mm/yyyy''), cnt,0)
    Regards
    Michael

  • Function returning query takes more time to run in Apex4.0

    Hi All,
    I created a report using function returning query. The function returns query based the parameters which returns dynamic columns. When I run the query in sql developer the query generates and returns the result in 3mins. But in apex it takes maximum of 35mins to return.
    The query will return around 10000 rows.
    Is it a performance issue in the query or in Apex?can anyone please help
    Regards
    Raj

    RajEndiran wrote:
    Hi Roel,
    Thanks much for your suggestion. I run in TOAD and got the result as
    Row 1 of 500 fetched so far in 3.31 minutes which means it queried for 500 records alone ? is that not the actual time taken to run the fulll query?That reflects the time to return the first 500 records...
    Please suggest.With all the best will in the world, if I was your user and I had to wait 3 minutes for the page to refresh, I'd steadily lose the will to live!
    As this is primarily an SQL tuning question, have a look at this message in the FAQ thread in the {forum:id=75} forum:
    {message:id=9360003}
    That should give you some pointers on the right approach.

  • Function Body Returning Query -  Questioning my Approach

    Application Express 3.2.0.00.27
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    I have some concerns that I am not using this in the optimal manner.
    Essentially I have all my queries in a package body and I call each report as follows:
    declare
    v_query varchar2(4000);
    begin
    v_query := apex.report_name(p1=>   :page_item_1,
                                                  p2=>   :application_item2);
    return 'select * from ('|| v_query||' )';
    end;I then generate the string in the report_name procedure
    and concatenate the string.
    This results in a valid sql string being returned to the database , however if I pass a different value
    then I will get a different sql string.
    I would rather be able to use bind variables using this approach if at all possible.
    So is this the correct approach is there a better approach?
    Edited by: Keith Jamieson on Jan 18, 2012 12:50 PM
    Edited by: Keith Jamieson on Jan 18, 2012 1:40 PM

    Current project makes extensive use of packages containing Function Body Returning Query report sources to dynamically build queries from SQL modules. However, the queries generated by any function are all used within one page. This enables page item bind variable references to be fixed within the SQL:
    function emp (p_commission in number) return varchar2
    is
      q_emp_qry varchar2(4000) := q'{select * from emp where 1 = 1 }';
      k_has_comm constant varchar2(2000) := q'{and comm >= to_number(:p2_sales_comm)}';
    begin
      if p_commission is not null
      then
        q_emp_qry := q_emp_qry || k_has_comm;
      end if;
      return q_emp_qry;
    end emp;

  • Return query based on condition

    I'm trying to create a report region that returns results based on which table the data is stored. I'm using the type SQL Query(PL/SQL function body returning SQL query). I do a select to the first set of tables if the data is not there then it will do a select on the other set of tables. Each query will work find alone. But one query will not work when I use the condition IF Else return query.
    Does anybody know how I can accomplish this?
    Here is the Query:
    declare
    v_cnt number;
    begin
    select count(*) into v_cnt from image_repo_images im, image_repo_lookup il
    where im.document_id_type = il.lookup_code
    and il.lookup_type = 'DOCUMENT_TYPE'
    and il.lookup_code = 1
    and im.document_id = :P1_FILE_DLN;
    if v_cnt > 0 then
    return 'select distinct il.meaning, im.document_id, im.system_entry_date,im.batch_type,im.document_id_type
    from image_repo_images im, image_repo_lookup il
    where im.document_id = :P1_FILE_DLN
    and im.document_id_type = il.lookup_code
    and il.lookup_type = ''DOCUMENT_TYPE''
    and il.lookup_code = 1;';
    else
    return 'select ''DLN'', dln, null e_date,null bt,null tp from income_tax_return_images where dln = :P1_FILE_DLN';
    end if;
    end;
    Looks rather straight forward to me.
    I get this error:
    report error:
    ORA-20001: Error fetching column value: ORA-01403: no data found
    Any help will be appreciated.

    Does this work for you:
    DECLARE
       v_cnt     NUMBER;
       v_query   VARCHAR2 (4000);
    BEGIN
       SELECT COUNT (*)
         INTO v_cnt
         FROM image_repo_images im, image_repo_lookup il
        WHERE im.document_id_type = il.lookup_code
          AND il.lookup_type = 'DOCUMENT_TYPE'
          AND il.lookup_code = 1
          AND im.document_id = :p1_file_dln;
       IF v_cnt > 0
       THEN
          v_query :=
                v_query
             || 'SELECT DISTINCT il.meaning, im.document_id,'
             || ' im.system_entry_date,im.batch_type,im.document_id_type'
             || ' FROM image_repo_images im, image_repo_lookup il'
             || ' WHERE im.document_id = :P1_FILE_DLN'
             || ' AND im.document_id_type = il.lookup_code'
             || ' AND il.lookup_type = ''DOCUMENT_TYPE'''
             || ' AND il.lookup_code = 1';
       ELSE
          v_query :=
                v_query
             || 'SELECT ''DLN'', dln, null e_date,null bt,null tp '
             || ' FROM income_tax_return_images WHERE dln = :P1_FILE_DLN';
       END IF;
       RETURN v_query;
    END;I think you have a semicolon too much at "...il.lookup_code = 1;"
    Denes Kubicek
    http://deneskubicek.blogspot.com/
    http://htmldb.oracle.com/pls/otn/f?p=31517:1
    -------------------------------------------------------------------

  • Unable to process function body returning query

    I have a table called ACCESS. The table has two columns, PERSON_ID NUMBER (holds employee reference) and SQL_QUERY VARCHAR2(4000) (holds query 'SELECT COL1, COL2, COL3 FROM APEX_TABLE;' )
    I am in the process of generating SQL Report. In the Create SQL Report (Page > SQL Report >Create SQL Report),
    I want to dynamically fetch the SQL_QUERY from the ACCESS table something like the below one.
    DECLARE
    strSql VARCHAR2(4000);
    BEGIN
    SELECT SQL_QUERY INTO strSql FROM ACCESS WHERE PERSON_ID=100;     
    RETURN strSql;
    END;
    I get the error Unable to process function body returning query when I try to run the page.
    However if I hardcode the query in the PL/SQL block, it works for example:
    DECLARE
    strSql VARCHAR2(4000);
    BEGIN
    strSql := 'SELECT COL1, COL2, COL3 FROM APEX_TABLE';
    RETURN strSql;
    END;
    How to resolve this?
    Regards,
    Anand

    Hi Denes,
    In your demo application you are using the below query (function returning sql). Is it possible to store this query as VARCHAR2 in a database table and query the table to return the QUERY ('SELECT deptno....')? Can you explain me with an example?
    DECLARE
    q VARCHAR2 (1000);
    BEGIN
    q := q || 'SELECT deptno, DECODE(deptno, ';
    q := q || '10, ''&lt;img src="#IMAGE_PREFIX#bullet1.gif" >'', ';
    q := q || '20, ''&lt;img src="#IMAGE_PREFIX#bullet2.gif" >'', ';
    q := q || '30, ''&lt;img src="#IMAGE_PREFIX#bullet3.gif" >'', ';
    q := q || '40, ''&lt;img src="#IMAGE_PREFIX#bullet4.gif" >'') ';
    q := q || 'image, dname FROM DEPT ';
    q :=
    q
    || 'WHERE CASE WHEN TO_NUMBER (:p1_dept) != -1 THEN deptno '
    || 'ELSE 1 END = CASE WHEN TO_NUMBER (:p1_dept) != -1 '
    || 'THEN TO_NUMBER (:p1_dept) ELSE 1 END';
    RETURN q;
    END;
    Thanks
    Anand

  • How to return query result in procedure

    Hi all,
    Can anyone tell me how to return query result in pl/slq procedure using out .
    thank you
    regards
    P Prakash

    Procedure for sys_refcursor:
    create or replace procedure ptest(c out sys_refcursor) is
    begin
      open c for select * from dual;
    end;Procedure for collections(although sys.ODCIVarchar2List is varray, same example you can use with "table of")
    create or replace procedure ptest2(c out sys.odcivarchar2list) is
    begin
      select dummy
      bulk collect into c
      from dual;
    end;Example:
    declare
      c sys_refcursor;
      v varchar2(100);
      vt sys.odcivarchar2list;
    begin
      ptest(c);
      fetch c into v;
      dbms_output.put_line('1.Cursor data: '||v);
      ptest2(vt);
      dbms_output.put_line('2.Collection data: '||vt(1));
    end;Regards,
    Sayan M.

  • Help with returning query from loadURL()

    I finally came across loadURL() and figured out that I can
    use it to invoke my ColdFusion components without page
    reloading--very handy!
    Now, I need to figure out how to do this to return values
    from my components. Has anyone done this and have an example I
    could see, or at least point out to me a suggestion of code for
    successfully doing this?
    Right now, my component looks like this:
    <cfcomponent output="no">
    <cffunction name="getComments" access="remote"
    output="no" returntype="query">
    <cfset var rsComments = "">
    <cfquery name="rsComments" datasource="xmlTest">
    SELECT *
    FROM comments
    ORDER BY commenter DESC
    </cfquery>
    <cfreturn rsComments>
    </cffunction>
    </cfcomponent>
    I am trying to use loadURL() as follows:
    function myQuery() {
    var myDatasetURL = 'xmlTest.cfc?method=getComments';
    var req = Spry.Utils.loadURL("GET", myDatasetURL, true);
    In Firebug, the "Response" shows a serialized WDDX packet.
    I've not really messed with these before, so any help would be
    greatly appreciated!
    Thanks
    Joel

    Your first mistake was to choose an array. An array has a fixed length, so it's not appropriate for storing a sequence whose length you don't know in advance. You should choose a List instead; an ArrayList would be a reasonable implementation to choose.
    Then you just add the Point to the ArrayList. Here's how you declare it:
    List<Point> points = new ArrayList<Point>();and here's how you use it in the listener:
    points.add(evt.getPoint());Returning anything from the listener to its caller, which is something buried in the GUI hierarchy, would be... um... pointless.

  • Return Query based on conditon

    Hi,
    I there are two queries i need to return them conditinally but i am getting a error please let me know where this error is comming from
    DECLARE
    q VARCHAR2(2000);
    BEGIN
    if :app_user like 'sudhir' then //Here :app_user is a bind variable
    q:=' SELECT
    APEX_ITEM.TEXT(1,null,10,10) "Enable"
    from dual ';
    RETURN q;
    End if;
    END;
    Error returned like this
    1 error has occurred
    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. The query can not be parsed, the cursor is not yet open or a function returning a SQL query returned without a value.
    Please suggest me how to modify
    Thanks
    Sudhir

    Is this an Apps problem?
    Then i think this is not the ideal place to post this kind of problem.
    This is a PL/SQL forum.
    Regards.
    Satyaki De.

  • Exhange Rate updation at query Level

    Dear Experts,
    While running SAP query choosing currency translation option "Conversion type on posting date", all the data takes effect with latest exchange rates.
    Ex. Data for the period May-08 takes effect of exchange rate of the month of Jan-09 i.e. USD =48.90000 instead of exchange rate 40.50000 which is for May-08.
    We want figures takes effect with respective months' exchange rate. We are updating exchange rate on periodic basis in BI. Pls suggest.
    Thanks,
    MMSl

    Hi,
    check this link
    http://space.itpub.net/15232446/viewspace-521037
    Thanks
    Hema

  • Report based on function returning query

    Hi all,
    I created a function FCT_1 in a package PKG, here is an exemple :
    function FCT_1(te in number) return varchar2
    is
    q varchar2(4000);
    begin
    if te = '1' then
    q := 'Select * from Clientele';
    else
    q := 'Select * from Compagnie';
    end if;
    return q;
    end;
    And I call this function the region source of my report like this :
    Declare
    q varchar2(4000);
    Begin
    q:=PKG.FCT_1(:P2_Nb); -- P2_Nb = 1 or 2
    return q ;
    end;
    But I got this error :
    report error:
    ORA-01403: no data found
    I need your help.
    Benn

    I got it,
    I just use the Use Generic Column Names (parse query at runtime only) option.
    I don't know why do I have to do it.
    Thanks
    Benn

  • Report pl/sql function body returning query bind variable

    I really like using report with a function returning sql. I have been using something like this
    declare
    q varchar2(10000);
    begin
    q := 'select col1
    from mytable
    .... add a dynamic where clause ....
    return q;
    end;
    But I thought it would be nice to store the query in a bind variable so that I could show the where clause. I tried to create an item P123_Q and do the following:
    declare
    q varchar2(10000);
    begin
    q := 'select col1
    from mytable
    .... add a dynamic where clause ....
    :P123_Q := q;
    return q;
    end;
    But the parser treats :P123_Q as if it is a bind variable within flow 4000. I found a workaround but I'm wondering if there is a better way.
    My workaround is to set a preference in the query and then use a computation that sets P123_Q to the value of the preference:
    declare
    q varchar2(10000);
    begin
    q := 'select col1
    from mytable
    .... add a dynamic where clause l_q := l_q || ....
    HTMLDB_UTIL.SET_PREFERENCE(
    p_preference => 'Q',
    p_value => q,
    p_user => :APP_USER);;
    return q;
    end;
    Any thoughts on another way?
    thanks,
    Anton

    Anton,if htmldb_application.get_current_flow_sgid(:APP_ID) = htmldb_application.get_sgid then
      :P1_X := l_sql;
    end if;Scott

Maybe you are looking for