Temporary table - yes or no?

I need to create a list of reports on the fly. The user will be able to pick from the list (with check boxes) which reports he wants printed. The reports will also be created on the fly. It's a long list of reports (30+) and it is always different.
The main problem are the check boxes. I could just run a query to generate the report list and then have a continuous form based on the result, but I need the check boxes, so I need another field that is editable, hence the idea for a temp table.
I've been testing it and creating a temp table in the front end with SQL strings is straightforward enough. But deleting and re-creating the table adds a lot of bloat to the FE really quick (after just 10 to 20 times I'm looking at double the file size).
If I create a temp db as well, will there be any bloat to my FE at all? How would I go about this? Do I have to programmatically link and unlink the external temp table every time?
Or is there a more elegant solution to my problem that doesn't involve a temp table and that I hadn't thought of?

I could just run a query to generate the report list
In that case why not use a multi-select list box, whose RowSource is the query?  The user can then simply select whatever reports they want from the list.  It's then a simple matter to loop through the list box's ItemsSelected collection to print
the reports.
Another technique I've employed is to use the Description property of the as the visible column in the list box, which allows you to show meaningful descriptions rather than cryptic object names, with the report's name in a hidden bound column.  The following
is code for a form's module where all reports with Description properties are listed, but it would not be difficult to be able to include specific reports in the list by using a suitable naming convention for the report names:
Option Compare Database
Option Explicit
Private Sub cmdPreview_Click()
     Dim strReport As String
     Dim varItem As Variant
     With Me.lstReports
        If .ItemsSelected.Count > 0 Then
            For Each varItem In .ItemsSelected
                strReport = .ItemData(varItem)
                DoCmd.OpenReport strReport, View:=acViewPreview
            Next varItem
        End If
    End With
End Sub
Private Sub Form_Open(Cancel As Integer)
    On Error GoTo Err_Handler
    Const NODESCRIPTION = 3270
    Dim ctrl As Control
    Dim dbs As DAO.Database
    Dim ctr As DAO.Container
    Dim doc As DAO.Document
    Dim strReportname As String
    Dim strDescription As String
    Set dbs = CurrentDb
    Set ctr = dbs.Containers("Reports")
    Set ctrl = Me.lstReports
    ctrl.RowSourceType = "Value List"
    ctrl.ColumnWidths = "0cm;8cm"
    ctrl.BoundColumn = 1
    ctrl.ColumnCount = 2
    For Each doc In ctr.Documents
        strReportname = doc.Name
        On Error Resume Next
        strDescription = doc.Properties("Description")
        Select Case Err.Number
            Case 0
            ' no error
            Case NODESCRIPTION
            ' report has no description
            ' so ignore and go to next report
            GoTo EndLoop
            Case Else
            ' unknown error
            GoTo Err_Handler
        End Select
        Err.Clear
        On Error GoTo Err_Handler
        ctrl.AddItem strReportname & ";" & strDescription
EndLoop:
    Next doc
Exit_Here:
    Exit Sub
Err_Handler:
    MsgBox Err.Description, vbExclamation, "Error"
    Resume Exit_Here
End Sub
Ken Sheridan, Stafford, England

Similar Messages

  • Global temporary table in PL/SQL called from APEX page

    I have a global temporary table in a PL/SQL procedure that is called from an APEX page.
    The global temp table is populated with data as the procedure runs and then at the end of the procedure I do a create_collection_from_query_b to populate a collection with the data from the temp table. (I do this b/c it is much faster than creating the collection and doing an add_member for each row.)
    The problem is that there are no commits in my procedure but I cannot get the bulk insert to work unless I define the temp table as on commit preserve rows.
    Can anyone shed any light on this issue.
    Thanks,
    Andrew

    alamantia wrote:
    My PL/SQL procedure is called from an after submit page process. Does that imply that there is a commit happening after that process is successful?Ultimately, yes.
    If the process calls the PL/SQL procedure and the temp table is in the procedure, wouldn't the commit fire after all the PL/SQL code is complete which would be after the bulk insert from the temp table to my collection?Yes, but at any point in the procedure containing code like
    :APEX_ITEM := ...or
    select ... into :APEX_ITEM from ...or
    my_procedure(p_in => ..., p_out => :APEX_ITEM, ...);or
    apex_util.set_session_state(...);then APEX will commit whilst maintaining session state.
    If you don't have any of these events in the procedure, then test to see if the commit is occurring in <tt>apex_collection.create_collection_from_query_b</tt> prior to creation of the collection.

  • What to fill in "temp table scope" for global temporary tables?

    Hi,
    I'm using Data Modeler 4.0.1.836 and whatever I put in the "temp table scope" box for a global temporary table doesn't seem to affect the DDL script regarding the ON COMMIT PRESERVE/DELETE ROWS option. The script always shows ON COMMIT PRESERVE ROWS no matter what.
    Yet, some of my temporary tables must be created as ON COMMIT DELETE ROWS.
    The Data Modeler help says the following about this :
    Temp Table Scope:
    For a table classified as Temporary, you can specify a scope, such as Session or Dimension.
    Not sure what "Dimension" has to do with the scope here, but it doesn't make any difference.
    I tried putting "Session", "Dimension", "Transaction", but no luck. So what's the text to put for the script to generate ON COMMIT DELETE ROWS?
    Thanks

    Hi,
    The Temporary Table Scope property (on the Classification Types page of the Table Properties dialog) is purely documentary.
    To set ON COMMIT DELETE ROWS you should expand the Browser node for the Relational Model and look for the node for the relevant Oracle Physical Model.  If you expand this you will find an entry there for your Table. Double-click on this to get the Physical Model properties dialog for your table, and you will find a "Temporary"  property which has options YES (Preserve Rows), YES (Delete Rows) or NO.
    David

  • Temporary Tables in Oracle

    Hi all,
    I am developing a .net application withe back end being oracle 10g. previously i worked with sql server 2005,2008 and i am new to oracle.
    i am working on a complex query which requiries, temporary table inside the procedure. In sql server easy to create and drop the temp table inside the proc.
    Can I use a Transaction specific GTT to store and process the temporary data inside my procedure??? My web application gets connected to the database through a one username and password. Since being a web applicatioin multiple users will execute the procedure at the same time, logged under the same username and password...
    I know its a coomon question, but i need it urgently..
    its very complicated to use WITH SELCT or inline views etc...
    Thank you,
    Kris.

    I know its a coomon question, but i need it urgently..If you know it is a common question then you should know the common answer. But let's rehearse it one more time.
    In Oracle temporary tables are permanent objects. It is only the data in them which is temporary. So for your scenario you shoudl have the DBA create the table once, like any other table.
    The trick with temporary tables is that each session sees its own data and nothing else. So your procedure can populate the table with data, process it and return it without a hitch.
    Since being a web applicatioin multiple users will execute the procedure at the same time, logged under the same username and password...Doesn't matter: the view of the data is controlled by session. So you haven't got a problem providing the table is populated and the resultset returned within a single call.
    its very complicated to use WITH SELCT or inline views etc...Yes it is hard. Fortunately CPUs keep getting more powerful and bandwidth keeps getting cheaper, so our systems continue to cope with the increasing amount of suck-y code being thrown at them. Isn't Moore's Law wonderful :)
    Cheers, APC
    blog: http://radiofreetooting.blogspot.com

  • Creating temporary tables

    Hi All ,
    I am new to oracle and i need to find out how can i create a temporary table in Oracle ?
    in MS SQL it's "select * into #tbl1 from tblABC"
    how can i do that in PL/SQL
    appreciate ur advise
    tks & rdgs

    the reason for wanting to create temp tables isonly for a particular session and also i'll
    get the columns definition directly from thesource table
    You are thinking like an MSSQL coder. Creating and
    dropping tables on the fly is A Bad Thing. It is
    slow - any DDL is. It is risky (what happens if the
    table cannot be created for any reason? what happens
    if it cannot be dropped?). It may complicate our
    transactional processing. It is also unnecssary,
    because Oracle provides us with a mechanism - global
    temporary tables - which doesn't exist in MSSQL.
    So please consider what actually benefit you derive
    from creating and dropping tables rather than using
    global temporary tables. Also whether you need any
    form of temporary table: Oracle has some nifty
    features, especially in the analytic functions, that
    may obviate the need for any intermediate data
    manipulation when generating reports.
    Cheers, APCHi ,
    yes it's true that i am still thinking from an MSSQL coder's pt of view , i thank you for your explanation and i yes shld start to learn to think as an Oracle coder so as to get the best out of Oracle

  • Create Temporary Tables

    Hi, there.
    Can anybody tell me what's the syntax for the SQL statements to create temporary tables?
    I'm developing a shopping cart, and at the end of every purchase (checkout) I want to organize the items of the Session Bean Hash Table that contains them, and group them by category, brand, price and show the serial number of each item. I was thinking to do SQL-style operations like GROUP BY on the Hash Table itself, but I am having a hard time with it, so that's why I thought that filling a temporary database table with the Hash Table data could be the solution to the problem of grouping and ordering the items contained in the Shopping cart Bean.
    I saw the following code in this same forum:
    stmt = con.createStatement();
    stmt.executeUpdate("create table temp (slno integer, first_name varchar(32), middle_name varchar(1), last_name varchar(32))");
    But I don't understand how the temporary table has a fixed name, isn't that going to create conflict with another user that creates a temporary table with the same name but in a different session?
    I hope my approach makes sense. If so, what's the SQL syntax to create temporary-session-like tables so I can include it in my JDBC code?
    Thank you in advance for any information or alternative suggestion.

    But I don't understand how the temporary table has a
    fixed name, isn't that going to create conflict with
    another user that creates a temporary table with the
    same name but in a different session?Yes, it is. That's one reason why people try to avoid creating temporary tables, I suppose. There are other reasons.
    I hope my approach makes sense. If so, what's the SQL
    syntax to create temporary-session-like tables so I
    can include it in my JDBC code?You already know the syntax for creating a table. Your only problem is finding a unique name for the table, one that no other user will use. You could have a one-row one-column table with a number in it, which you read and increment, then use that number for your table name, for example. Unless your database happens to have this as a feature -- you would have to read its documentation to find that out.
    However as I implied before, you should try to avoid creating temporary tables. Creating a table is a time-consuming operation, and if your program ends abnormally without dropping the temporary table, your database slowly fills up with useless tables.

  • Temporary Table Not Creating With Rows

    I'm running Oracle 9i on Windows XP, and I'm trying to create a temporary table to use in a larger query. The problem is that when I create it using ON COMMIT DELETE ROWS, after creation it has no rows. If I use ON COMMIT PRESERVE ROWS, then I can't delete it unless I log out and come back.
    Here's the query
    CREATE GLOBAL TEMPORARY TABLE tempaltid
    ON COMMIT PRESERVE ROWS as (select distributionid
    from distributions d
    where D.distributionid not in
    (select distributionid
    from distributionalternatives
    where ( distributionalternatives.alternativeid not in (11018,11019,11020,11021,11022,11023,11024,
    11025,11026,11475,11476,11477,11478,11479,
    11480,11481,11482,11483,11484,11485,11486,
    11487,11488,11489,11490,11491,11492,11493,
    11494,11495)))
    and D.distributiontypeid in
    (239,209)
    and D.distributionexpdt is null);
    I'm not committing after creation, so I don't see why the table would just be empty.

    Yes you are, and before too
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/sqlplsql.htm#sthref3520
    You don't use global temporary tables like that, you create them once and fill and empty them repeatedly.

  • Scalability issue with global temporary table.

    Hi All,
    Does create global temporary table would lock data disctionary like create table? if yes would not it be a scalable issue with multi user environment?
    Thanks and Regards,
    Rudra

    Billy  Verreynne  wrote:
    acadet wrote:
    am I correct in interpreting your response that we should be using GTT's in favour of bulk operations and collections and in memory operations? No. I said collections cannot scale. This means due to the fact that collections reside in expensive PGA memory, you cannot stuff large data volumes into them. Thus they do not make an ideal storage bin for temporary data (e.g. data loaded from file or a web service). GTTs otoh do not suffer from the same restrictions, can be indexed and offer vastly better scalability and so on.
    Multiple passes are often needed using such a data structure. Or filtering to find specific data. As a GTT is a SQL native, it offers a lot more flexibility and performance in this regard.
    And this makes sense - as where do we put out persistent data? Also in tables, but ones of a persistent and not temporary kind like a GTT.
    Collections are pretty useful - but limited in size and capability.
    Rudra states:
    I want to pull out few metrices from differnt tables and processing itIf this can't be achieved in a SQL statement, unless Rudra is a master of understatement then I would see GTT's as a waste of IO and programming effort. I agree.
    My comments however were about choices for a temporary data storage bin in PL/SQL.I agree with your general comments regarding temporary storage bins in Oracle, but to say that collections don't scale is putting to narrow a definition on scaling. True, collections can be resource intensive in terms of memory and CPU requirements, but their persistence will generally be much shorter than other types of temporary storage. Given the right characteristics, collections will scale and given the wrong characteristics GTT's wont scale.
    As you say it is all about choice. Getting back to the theme of this thread though, the original poster should be made aware that well designed and well coded applications are most likely to scale. Creating tables on the fly is generally considered bad practice and letting the database do what it does best, join tables in queries at the SQL level is considered good practice. The rest lies somewhere in between and knowing when to do which is why we get paid the big bucks (not). ;-)
    Regards
    Andre

  • Question about temporary tables and imports.

    Hello everybody.
    Interesting one this. We have an application that uses global temporary tables. We refresh live to test using import of the application schema. I noticed when doing this yesterday that the temporary tables were being recreated in test as perminant rather than temporary.
    Is there a reason for this? Has anyone come across this before? Is there a way around it (apart from manual checking)?
    Many thanks
    Rup

    Could you specify how you found out that it is coming in as permanent?
    I believe exp/Imp will export and import it is Temporary table. I have just done a simple test to check and it works fine;
    Here is my test log:
    SQL> connect scott
    Enter password:
    Connected.
    SQL>SQL> CREATE GLOBAL TEMPORARY TABLE test_global
      2          (startdate DATE,
      3           enddate DATE,
      4           class CHAR(20))
      5        ON COMMIT DELETE ROWS;
    Table created.
    SQL>  select table_name,temporary from user_tables where table_name='TEST_GLOBAL';
    TABLE_NAME                     T
    TEST_GLOBAL                    Y
    SQL> select table_name,temporary from user_tables;
    TABLE_NAME                     T
    DEPT                           N
    EMP                            N
    BONUS                          N
    SALGRADE                       N
    TEST_GLOBAL                    Y
    SQL> exit
    Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
    With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
    C:\Documents\dbmsdirect\Testing\global>exp
    Export: Release 10.2.0.2.0 - Production on Wed Feb 20 12:18:45 2008
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    Username: scott
    Password:
    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
    With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
    Enter array fetch buffer size: 4096 >
    Export file: EXPDAT.DMP > test_global
    (2)U(sers), or (3)T(ables): (2)U > t
    Export table data (yes/no): yes >
    Compress extents (yes/no): yes >
    Export done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
    server uses AL32UTF8 character set (possible charset conversion)
    About to export specified tables via Conventional Path ...
    Table(T) or Partition(T:P) to be exported: (RETURN to quit) > test_global
    . . exporting table                    TEST_GLOBAL
    Table(T) or Partition(T:P) to be exported: (RETURN to quit) >
    Export terminated successfully without warnings.
    C:\Documents\dbmsdirect\Testing\global>sqlplus /nolog
    SQL*Plus: Release 10.2.0.2.0 - Production on Wed Feb 20 12:19:50 2008
    Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.
    SQL> connect scott
    Enter password:
    Connected.
    SQL> drop table test_global purge;
    Table dropped.
    SQL> exit
    Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
    With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
    C:\Documents\dbmsdirect\Testing\global>imp
    Import: Release 10.2.0.2.0 - Production on Wed Feb 20 12:20:19 2008
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    Username: scott
    Password:
    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
    With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
    Import file: EXPDAT.DMP > test_global.DMP
    Enter insert buffer size (minimum is 8192) 30720>
    Export file created by EXPORT:V10.02.01 via conventional path
    import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
    import server uses AL32UTF8 character set (possible charset conversion)
    List contents of import file only (yes/no): no >
    Ignore create error due to object existence (yes/no): no >
    Import grants (yes/no): yes >
    Import table data (yes/no): yes >
    Import entire export file (yes/no): no > yes
    . importing SCOTT's objects into SCOTT
    . importing SCOTT's objects into SCOTT
    Import terminated successfully without warnings.
    C:\Documents\dbmsdirect\Testing\global>sqlplus /nolog
    SQL*Plus: Release 10.2.0.2.0 - Production on Wed Feb 20 12:22:44 2008
    Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.
    SQL> connect scott
    Enter password:
    Connected.
    SQL>
    SQL> select table_name,temporary from user_tables;
    TABLE_NAME                     T
    DEPT                           N
    EMP                            N
    BONUS                          N
    SALGRADE                       N
    TEST_GLOBAL                    Y
    SQL> insert into TEST_GLOBAL values (sysdate,sysdate,'test1');
    1 row created.
    SQL> select * from TEST_GLOBAL;
    STARTDATE ENDDATE   CLASS
    20-FEB-08 20-FEB-08 test1
    SQL> commit;
    Commit complete.
    SQL> select * from TEST_GLOBAL;
    no rows selected
    SQL>  select table_name,temporary from user_tables where table_name='TEST_GLOBAL';
    TABLE_NAME                     T
    TEST_GLOBAL                    Y
    SQL>

  • Problem while creating index for temporary table...

    Hi,
    i have created index for a temporary table and this script should used by multiusers.So when second user connecting to it is giving index i mean object already exists.
    So what i need is when the second user connected the script should create one more index on temporary table.Will sql server provide any random way of creating indexes if the index exists already with that name??
    Thank You,

    Nope..
    SQL Server is cleaver enough to handel this situation.
    When you create a index or constraint on the Temp Table, eventhough the index name is duplicate it will allow.
    But it only possible on temp tables (prefixed with single #).
    To Test this,
    Open Two window,
    Execute the below window on the opened 2 window..
    create table #test
                id int
    Insert Into #test values(1);
    Insert Into #test values(2);
    Create clustered index testindex on #test(id)
    Now you wont get any error on any of the window. Rite?
    To fetch the created index details, execute the below code on any one of the window..
    select * from sysindexes where name like '%test%'
    Now you can see the 2 rows with same indexname but refereing with different table. Yes. all the temp tables (#) will be suffixed with unique number to avoid the object already found error while multiple users connects.
     

  • Filling temporary table with two other tables.

    Hi everyone,
    In an start routine, I would like to do the following :
    read values in an internal table, save it in temporary table tab1.
    read values in an internal table (the same with a different request) and save it in temporary table tab2.
    save with no duplicate keys and in a sorted table tab3 the result of the two tables.
    I have coded like this, but it doesn't work, since the final table is empty.
    Indeed, the system says it is tried to insert a duplicate key. How is it possible using instruction INSERT ?
        DATA : t_agence_1 TYPE SORTED TABLE OF ty_agence
                       WITH UNIQUE KEY /BIC/C_AGENCE2
                       WITH HEADER LINE.
        DATA : t_agence_2 TYPE SORTED TABLE OF ty_agence
                       WITH UNIQUE KEY /BIC/C_AGENCE2
                       WITH HEADER LINE.
        DATA : t_agence TYPE SORTED TABLE OF ty_agence
                       WITH UNIQUE KEY /BIC/C_AGENCE2
                       WITH HEADER LINE.
    SELECT * FROM /BIC/PC_AGENCE2
          INTO CORRESPONDING FIELDS OF TABLE t_agence_1
          FOR ALL ENTRIES IN DATA_PACKAGE
               WHERE CALMONTH = DATA_PACKAGE-CALMONTH
               AND /BIC/C_AGENCE2 = DATA_PACKAGE-/BIC/C_AG1
               AND objvers = 'A'.
         IF sy-subrc = 0.
           INSERT LINES OF t_agence_1 INTO TABLE t_agence.
         endif.
       SELECT * FROM /BIC/PC_AGENCE2
          INTO CORRESPONDING FIELDS OF TABLE t_agence_2
          FOR ALL ENTRIES IN DATA_PACKAGE
               WHERE CALMONTH = DATA_PACKAGE-CALMONTH
               AND /BIC/C_AGENCE2 = DATA_PACKAGE-/BIC/C_AG2
               AND objvers = 'A'.
       IF sy-subrc = 0.
              INSERT LINES OF t_agence_2 INTO TABLE t_agence.
       endif.
    Thanks if you can help !
    regards
    fred
    Edited by: Christophe BELIN on Dec 5, 2008 3:43 PM

    Shanon,
    You would handle the parent with two child tables exactly the same way you would a parent with one child.
    1) Bring in all 3 tables through the Database Expert.
    2) On the Links Tab, place the parent table on the left of the window and the two child tables to the right (yes there is a reason for doing this).
    3) Delete any CR generated links between the tables.
    4) "Draw" a link that starts from the parent table to the 1st child table and then again, from the parent to the 2nd child.
    a. I'm assuming that you know which fields to link on.
    b. No links between children.
    5) Once you have both links in place right click them and change the "Link Type" to "Left Outer Join"
    a. The reason for doing this: It allows ALL of the parent records to come through, even if they do not have any matching records in
    one or both of the child tables.
    Hope this helps,
    Jason

  • Help Please:  Need To Create Temporary Table

    Hi Guys,
    I am a new Oracle user. I need to create this report that uses
    temporary table. I can't use "create" statment in the sql
    query. Now wihtout that I don't know how to create the
    temporary table. Please let me know if anyone has any
    suggestions.
    Thanks a billion
    Sam

    Hi Sam,
    yes, you can't apply neither Data Definition Language (DDL) nor
    Data Manipulation Language (DML), except SELECT statement, at
    the query builder inside your report. You may create a stored
    procedure containing the DDL or the DML, then run this stored
    procedure at the "Before Report" trigger. You can find this
    trigger under Report Triggers of your Object Navigator.
    hope this help you.
    have a nice day...
    daniel

  • Problem with global temporary table with rows

    Scenario :
    I need to create a table for generating a report in a oracle 10g database. Data population in the table depends on the parameter passed from front end.
    I have created global temporay table to achieve this. But use of same table by another user is not possible.
    I have created the global temporary table as follows:
    ''Create global temporay table xyz (a varchar2(10),b varchar2(10)) on commit preserve rows''

    You have not posted much details.
    But yes, global temporary tables are session specific. So other session won't see anything.
    Amardeep Sidhu
    http://amardeepsidhu.com/blog
    http://oracleadmins.wordpress.com

  • Temporary table within a package

    I'm not sure this is the best way to achieve it, but I'm trying to use a temporary table within my package, but I failed!
    In my package, my procedure do receive 5 different phone numbers (vTel1 to vTel5) and I need to order them, using data from a table. Also, if 2 of them are the same, I need only the one with the highest rank.
    Let say my TelOrder table look likes:
    Reason
    Tel1
    Tel2
    Tel3
    Tel4
    Tel5
    Reason1
    2
    3
    1
    5
    4
    Reason2
    1
    2
    null
    3
    4
    And I receive those variable
    vTel1='5141111111'
    vTel2=null
    vTel3='5143333333'
    vTel4='5141111111'
    vTel5='5145555555'
    vReason='Reason1'
    Using the Reason1, I need to be able to get the result looking like:
    RowNum
    Phone
    Order
    1
    5143333333
    1
    2
    5141111111
    2
    3
    5145555555
    4
    And I need this code to be apart from the procedure, cause many procedures will use the same code, and I don't want to abuse the ctrl+c, ctrl+v at each update.
    I've come close by using something like:
    EXECUTE IMMEDIATE '
         INSERT INTO Table
         SELECT Rownum as RN, Ordre, contact_info, Contact_info_type
         FROM
           (SELECT a.contact_info, a.ordre, contact_info_type FROM
             (SELECT contact_info,min(ordre) as Ordre FROM
               (SELECT Tel1 as Ordre, ''' || vTel1 || ''' as contact_info, 1 as contact_info_type FROM TelOrder WHERE Reason=''' || vReason || '''
               UNION ALL
               SELECT Tel2 as Ordre, ''' || vTel2 || ''' as contact_info, 2 as contact_info_type FROM TelOrder WHERE Reason=''' || vReason || '''
               UNION ALL
               SELECT Tel3 as Ordre, ''' || vTel3 || ''' as contact_info, 4 as contact_info_type FROM TelOrder WHERE Reason=''' || vReason || '''
               UNION ALL
               SELECT Tel4 as Ordre, ''' || vTel4 || ''' as contact_info, 4 as contact_info_type FROM TelOrder WHERE Reason=''' || vReason || '''
               UNION ALL
               SELECT Tel5 as Ordre, ''' || vTel5 || ''' as contact_info, 1 as contact_info_type FROM TelOrder WHERE Reason=''' || vReason || '''
             WHERE Ordre is not null and contact_info is not null
             GROUP BY contact_info
             ) a
           JOIN
             (SELECT Tel1 as Ordre, ''' || vTel1 || ''' as contact_info, 1 as contact_info_type FROM TelOrder WHERE Reason=''' || vReason || '''
             UNION ALL
             SELECT Tel2 as Ordre, ''' || vTel2 || ''' as contact_info, 2 as contact_info_type FROM TelOrder WHERE Reason=''' || vReason || '''
             UNION ALL
             SELECT Tel3 as Ordre, ''' || vTel3 || ''' as contact_info, 4 as contact_info_type FROM TelOrder WHERE Reason=''' || vReason || '''
             UNION ALL
             SELECT Tel4 as Ordre, ''' || vTel4 || ''' as contact_info, 4 as contact_info_type FROM TelOrder WHERE Reason=''' || vReason || '''
             UNION ALL
             SELECT Tel5 as Ordre, ''' || vTel5 || ''' as contact_info, 1 as contact_info_type FROM TelOrder WHERE Reason=''' || vReason || '''
             ) b ON a.contact_info=b.contact_info AND a.ordre=b.ordre
           ORDER BY a.Ordre
    But when I try to remove this code and send it into another procedure/function, I can't make it work.
    PLEASE HELP!!!!  

    No Database to try it. Check at your own risk if this might work for you
    no version specified from your side, NOT TESTED from my side, so let's say we're even
    select row_number() over (order by the_order) "RowNum",
           the_val "Phone",
           the_order "Order"
      from (select v.the_val,t.the_order,
                   row_number() over (partition by v.the_val order by t.the_order) rn
              from (select reason,the_order,the_phone
                      from (select reason,tel1,tel2,tel3,tel4,tel5
                              from telorder
                             where reason = :the_reason
                    unpivot include nulls (the_order for the_phone in (tel1 as 'tel1',
                                                                       tel2 as 'tel2',
                                                                       tel3 as 'tel3',
                                                                       tel4 as 'tel4',
                                                                       tel5 as 'tel5'
                   ) t,
                   (select 'tel1' the_var,:v_tel1 the_val from dual union all
                    select 'tel2' the_var,:v_tel2 the_val from dual union all
                    select 'tel3' the_var,:v_tel3 the_val from dual union all
                    select 'tel4' the_var,:v_tel4 the_val from dual union all
                    select 'tel5' the_var,:v_tel5 the_val from dual
                   ) v
             where t.reason = :v_reason
               and t.the_phone = v.the_var
    where rn = 1
       and the_val is not null
    Regards
    Etbin

  • How create temporary table from list of values

    Can you anybody advise me how can I create temporary table from list of values? I have list of values and need create temporary table for next use with command JOIN etc.
    Thank you for help

    NO, you can not create temporary table in oracle on the fly ( Like #Tabels in SQl Server or Sybase ) , you will have to use the GTT i.e Global Temporary Tables
    check the following link GTT :
    to flush the tables after commit
    CREATE GLOBAL TEMPORARY TABLE my_temp_table (
      column1  NUMBER,
      column2  NUMBER
    ) ON COMMIT DELETE ROWS;In contrast, the ON COMMIT PRESERVE ROWS clause indicates that rows should be preserved until the end of the session.
    so to keep rows in Table after commit
    CREATE GLOBAL TEMPORARY TABLE my_temp_table (
      column1  NUMBER,
      column2  NUMBER
    ) ON COMMIT PRESERVE ROWS;

Maybe you are looking for

  • Read contineously file from folder

    HI I have 1000 of files and I want read files from folder automatic. Each file ends with if $BATCH_FILE==true define $END,false else power off define $END,true if 1 text file is finish then it should load another file automatically

  • BAPI_SALESORDER_CREATEFROMDAT2 using Promotion Codes

    Can anyone provide information or point to where information may be found for BAPI_SALESORDER_CREATEFROMDAT2 structure ORDER_ITEMS_IN has a PROMOTION field. Would like to know if anyone has used this field and how SAP uses it.

  • HTTP GET for sender adapter possible ?

    I have to get XML-messages from third party webservice. I should use HTTP GET to get the data but is this possible in XI ? I mean like RFC->XI->HTTP(GET) and I would process the response from HTTP GET call.

  • How To Run An External .exe File With Command Line Arguments

    Hiya, could anyone tell me how I can run an external .exe file with command line arguments in Java, and if possible catch any printouts the external .exe file prints to the command line. Thanks.

  • Error after setting the iTunes prefereces.

    Hi, I have istalled the latest version of iTunes6.0.4.2. Now after setting the iTunes preferences i clicked OK, Then i got an error message saying .... "An error occured while updating the default platyer for audio file types. You do not have enough