How to use Oracle temporary table and verify if it exists

1. I got two errors on the following code.
ORA-06550: line 13, column 4:
PLS-00428: an INTO clause is expected in this SELECT statement
ORA-06550: line 17, column 3:
PLS-00103: Encountered the symbol "CREATE" when expecting one of the following:
2. Can I include this code in the create view statement?
Thanks ahead, I am new to oracle dev world.
===========================================================
DECLARE
l_count NUMBER;
BEGIN
select count(*)
into l_count
from all_tables
where table_name like 'TEMP_SHOW_STAFF_2%';
if l_count > 0 then
select * from TEMP_SHOW_STAFF_2;
else
create global temporary table TEMP_SHOW_STAFF_2
(employee_id Number,
last_name varchar(10),
first_name varchar(10),
salary_amount varchar(10))
on COMMIT delete rows;
end if;
END;

The PL/SQL User's Guide will have much more information, but as a quick example (new_dept is an empty table with the same structure as the DEPT table in the SCOTT schema).
  1  declare
  2    -- Create the type & declare a variable of that type
  3    type dept_arr_typ is table of dept%rowtype;
  4    dept_arr dept_arr_typ;
  5  begin
  6    -- Populate the type in memory
  7    select *
  8      bulk collect into dept_arr
  9      from dept;
10    -- Manipulate the data
11    for i in 1..dept_arr.count
12    loop
13      select 'foo'
14        into dept_arr(i).dname
15        from dual;
16    end loop;
17    -- Write the data back
18    for i in 1..dept_arr.count
19    loop
20      insert into new_dept( deptno, dname, loc )
21        values( dept_arr(i).deptno, dept_arr(i).dname, dept_arr(i).loc );
22    end loop;
23* end;
SCOTT @ nx102 Local> /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.01
SCOTT @ nx102 Local> select * from new_dept;
    DEPTNO DNAME          LOC
        10 foo            NEW YORK
        20 foo            DALLAS
        30 foo            CHICAGO
        40 foo            BOSTONOf course, for this sort of thing, we could do everything in a single SQL statement
INSERT INTO new_dept( deptno, dname, loc )
  SELECT deptno, 'foo', loc
    FROM dept;Collections can be handy if you need to apply a bit more conditional logic, though.
Justin

Similar Messages

  • Need help recreating this in Oracle (Temporary Table and a Cursor)

    Hey all,
    My client has asked me to see if it's possible to move his SQL Queries into Oracle, and then move EVERYTHING off of MSSQL into this new oracle environment. The problem is, I wrote the entire MSSQL system, and i know nothing about Oracle.
    Basically, I need some examples. I have been stumbling around Oracle for about a year now, so i'm 'somewhat' familiar with it.
    Basically, i'm going to create a script/stored procedure that will first:
    Create and define a temporary table that is used when the script/proc is called.
    Then, thru cursors, i'm going to add a bunch of lines to it.
    Finally, i'm going to Run a select statement against the temporary table we created.
    Now, I can't create a table on the server, as the production environment will not allow it, so i need to be able to create this virtually inside the script, and then it automatically self destructs at the end of the script.
    If anyone knows if this is possible, please post me a few links to examples, or just lay down the code to get the temprary table made.
    We're using TOAD as the interface.
    Thanks,
    Dan

    Thank you for the warm welcome.
    The SQL looks something like this:
    (Before you get lost in the code, this is an abreviation of the code, but every function is represented. This will also work in TOAD Script? I'm most worried about the use of how a Table is declared in Oracle, as i've seen many different versions of how to do this. Thanks)
    ~Dan
    Declare @AREA nvarchar(50)
    Declare @tmpTable Table (
         [AC_PROPERTY_ID] [INT] NULL,
         [PROPNUM] [nvarchar](50) NULL,
         [SORT_ORDER] [INT] NULL,
         [IS_TOTAL] [BIT] NULL,
         [FIELD] [nvarchar](200) NULL,
    [AREA] [nvarchar](200) NULL,
         [ENG] [nvarchar](200) NULL,
         [RSV_CAT] [nvarchar](200) NULL,
         [WELL_NAME] [nvarchar](200) NULL,
         [SHORTS_PROGRAM] [nvarchar](15) NULL,
         [SHORT_MO] [nvarchar](6) NULL,
         [SHORTS_YR] [nvarchar](6) NULL,
         [SHORTS_DESC] [nvarchar](100) NULL)
    Insert Into @tmpTable ([AC_PROPERTY_ID],[PROPNUM],[FIELD],[AREA],[ENG],[RSV_CAT],[WELL_NAME],[SHORTS_PROGRAM],[SHORT_MO],[SHORTS_YR],[SHORTS_DESC])
    Select AC_PROPERTY_ID],[PROPNUM],[FIELD],[AREA],[ENG],[RSV_CAT],[WELL_NAME],[SHORTS_PROGRAM],[SHORT_MO],[SHORTS_YR],[SHORTS_DESC] from dbo.someoldtablenameimadeup where propnum>1000
         DECLARE idcursor cursor
         FOR
         Select Distinct AREA
         from @tmpTable
         Open idcursor
         Fetch Next from idcursor into @AREA
              While (@@FETCH_STATUS <> -1)
                   BEGIN
                   IF (@@FETCH_STATUS <> -2)
                        <Do stuff for each record in the cursor>
              FETCH NEXT FROM idcursor INTO @AREA
              END
              CLOSE idcursor
              DEALLOCATE idcursor

  • How to use a Sybase table in Oracle SQL statement?

    How to use a Sybase table in Oracle SQL statement?
    Sybase version : 11.9.2.4
    Oracle version : 10.2.05
    Thanks.

    user12088323 wrote:
    How to use a Sybase table in Oracle SQL statement?
    Sybase version : 11.9.2.4
    Oracle version : 10.2.05
    Thanks.Any Oracle client connected to the Oracle database can access Sybase data through the <font style="background-color: #FFFFCC">Database Gateway for Sybase</font> (it requires an additional license) or the <font style="background-color: #FFFFCC">Database gateway for ODBC</font> (it's free).
    The Oracle client and the Oracle database can reside on different machines. The gateway accepts connections only from the Oracle database.
    A connection to the gateway is established through a database link when it is first used in an Oracle session. In this context, a connection refers to the connection between the Oracle database and the gateway. The connection remains established until the Oracle session ends. Another session or user can access the same database link and get a distinct connection to the gateway and Sybase database.
    Database links are active for the duration of a gateway session. If you want to close a database link during a session, you can do so with the ALTER SESSION statement.
    To access the Sybase server, you must create a <font style="background-color: #FFFFCC">database link</font>. A public database link is the most common of database links.
    SQL> CREATE PUBLIC DATABASE LINK dblink CONNECT TO
    2  "user" IDENTIFIED BY "password" USING 'tns_name_entry';
    --dblink is the complete database link name.
    --tns_name_entry specifies the Oracle Net connect descriptor specified in the tnsnames.ora file that identifies the gatewayAfter the database link is created you can verify the connection to the Sybase database, as follows:
    SQL> SELECT * FROM DUAL@dblink;
    Configuring Oracle Database Gateway for Sybase
    <font style="background-color: #FFFFCC">{message:id=10649126}</font>

  • TopLink, use of Oracle Temporary tables

    A project using TopLink has the following questions. Could someone help answer them?
    Does TopLink support the use of Oracle Temporary tables?
    Is there any recommendation regarding the two possible ways of setting them up, see below:
    ON COMMIT Setting Description DELETE ROWS This creates a temporary table that is transaction specific. A session becomes bound to the temporary table with a transactions first insert into the table. The binding goes away at the end of the transaction. The database truncates the table (delete all rows) after each commit.
    PRESERVE ROWS This creates a temporary table that is session specific. A session gets bound to the temporary table with the first insert into the table in the session. This binding goes away at the end of the session or by issuing a TRUNCATE of the table in the session. The database truncates the table when you terminate the session.
    We appreciate your assistance.
    Haiwei

    Haiwei,
    TopLink has no explicit support for temporary tables but it should be possible. It is tough to answer your question since it really depends upon connection and transaction management for either case. What is your planned configuration TopLink with respect to external versus internal connection pooling as well as the JTA TX management.
    I believe you are deploying your applications within WebSphere but would just like to confirm that you are using WAS data sources and transaction management.
    Doug

  • How to use my own DTD and table using the XML SQL utility.

    Hey,
    Here is my question. I have succesfully installed Oracle XML SQL utility and I had played around on that. Now I have my own DTD that too from Rosettanet(PIP). Tell me how can I use my own table, and my dtd using the existing utility. What are all the changes do I need to do. I am strugling it from past 4 days. I couldn't. Please help me!

    Hi chris,
    Yes, the SQL can be changed only by using Discoverer Administrator.
    Open the report/workbook that is based on the custom SQL that you want to change in Discoverer Plus. Look at the Folder that is being used to select the columns of the report.
    Open up the Discoverer Administrator with the id that has access to the tables referenced in the report. And the custom folder with the same name as in Disc Plus would be listed down in the Business Area (Which Business Area the custom folder belongs to can be determined with the help of disc plus).
    Just open up that folder, and change the SQL in it. You can pasted your new sql in there and click on Validate SQL to validate it for errors. If no errors, then the custom folder is successfully changed.
    In order to have it reflected, close your existing disc plus session and reopen it, and you can go about using the custom folder.
    Hope this helps!
    Thanks.

  • Can oracle temporary tables be used with distributed transactions?

    Hello,
    Does anybody know if temporary tables are supported with distributed transactions?
    We use a temporary table to store query results and see no problems when the JDBC driver (Type 2 or Type 4) is used with local transactions. The temporary tables are set for transaction-level data persistence (delete rows on commit).
    When we switch to JDBC/XA driver we occasionally get ORA-14450 error (java.sql.SQLException: ORA-14450: attempt to access a transactional temp table already in use).
    Many thanks...

    I have been able to use temporary tables on remote databases, so I don't think that it is forbidden. Of course, I'm not using JDBC so that might be a problem.
    The other thing that occurs to me is that you are doing something other than DML with the table e.g. trying to drop it. If that is the case you should re-read the documentation and remind yourself of the purpose of temporary tables.
    Cheers, APC

  • How to Create a Temporary Table with SQL Server

    I know you can create a temporary table in SQL Server 2000, but not quite sure how to do it in CFMX 7, i.e., does the SQL go inside a <CFQUERY dbtype="query"> tag?
    I'm pulling the main set of records from an Oracle server (1st data source), but it does not contain employee names, only employee IDs.  Since I need to show the employee name along with the Emp ID, I'm then pulling a list of "current" employee names from a SQL Server (2nd data source), which is the main database on our CF server.
    I've got a QofQ that works fine, except it only matches EmpIDs that exist in both result sets.  Employees who are no longer employed, don't match, and don't display.  Since I can't do a LEFT OUTER JOIN with a QofQ, what I need to do is get the records from the Oracle server into the SQL Server.  Preferably in a temporary table.
    I was hoping if I could get those Oracle records written to a temp table on the main SQL Server, in same database as the Employee Name table, I could then write a normal <CFQUERY> that uses a LEFT OUTER JOIN.
    I think I could probably write a Stored Procedure that would execute the SQL to create the temporary table, but am trying to avoid having to write the SP, and do it the simplest way.
    This query will be a program that can be run hundreds of times per day, with a form that allows users to select date ranges, locations, and other options.  That starts the queries, which creates the report.  So I just need the temp table to exist only until all the SQL has run, and the <CFOUTPUT> has generated a report.
    If the premise is right, I just need some help with the syntax for creating a SQL Server temp table, when you want to write records to it from an external data source.  I'm trying the following, but getting an error:
    <CFQUERY name="ITE_Temp" datasource="SkynetSQL">
    CREATE TABLE #MyTemp
    (   INSERT INTO #MyTemp
    ITE2.TrueFile char (7) NOT NULL,
    ITE2.CountOfEmployee int NULL,
    ITE2.DTL_SUBTOT decimal NULL,
    ITE2.EMPTYPE char (3) NULL,
    ITE2.ARPT_CD char (3) NULL
    </CFQUERY>
    So I actually created a permanent table on the SQL Server, and wrote the below SQL, which does work, and does write the records to table.  I can then write another CFQUERY with a LEFT OUTER JOIN, and get all the records, including those that don't have matching employee name:
    <CFQUERY datasource="SkynetSQL">
    <CFLOOP index="i" from="1" to = "#ITE2.RecordCount#">
    INSERT INTO ITE_Temp
       (FullFile,
       EmployeeCount,
       DTL_Amount,
       EmployeeType,
       station)
    VALUES  ('#ITE2.TrueFile[i]#',
       #ITE2.CountOfEmployee[i]#,
       #ITE2.DTL_SUBTOT[i]#,
       '#ITE2.EMPTYPE[i]#',
       '#ITE2.ARPT_CD[i]#')
    </CFLOOP>
    </CFQUERY>
    But, I hate to have to create a table and physically write to it.  For one, it seems slower, and doing it in temp would be in memory, and probably much faster, correct?  Is there some way to code the above, so that it does something similar, but in a TEMPORARY TABLE?   If I can figure out how to do this, I can pull data from multiple data sources and servers, and using SQL Server temp tables, work with the data as if it was all on the same SQL Server, and do some cool reports.
    Everything I've done for the past few years, has all been from data from a single source, whether SQL Server, or another server.  Now I need to start writing reports where data can come from 3 or 4 different servers, and be able to do joins (inner and outer).  Thanks for any advice/help.  Much appreciated.
    Gary

    While waiting to hear back, I was able to write the query results from an outside Oracle server, to a table on the local SQL Server, and do the LEFT OUTER JOIN required for the final query and report to work.  That was with this syntax:
    <CFQUERY name="AddTableRecords" datasource="MyTable">
    TRUNCATE TABLE ITE_Temp
    <CFOUTPUT query="ITE2">
    INSERT INTO ITE_Temp
    (FullFile,EmployeeCount,DTL_Amount,EmployeeType,station)
    VALUES
    ('#TrueFile#', #CountOfEmployee#, #DTL_SUBTOT#, '#EMPTYPE#', '#ARPT_CD#')
    </CFOUTPUT>
    </CFQUERY>
    However, I was not able to write to a temporary table AND read the results. I got the syntax to run to write the above results to a temporary table.  But when I tried to read and output the results from the temp table, I got an error.  Also, it wouldn't take the single "#" (local) only the global "##" table var, using this syntax.  Note that if I didn't have the DROP TABLE in the beginning, the 2nd time you run this query, you get an error telling you the table already exists.
    <CFQUERY name="ITE_Temp2" datasource="MyTable">
    DROP TABLE ##MyTemp2
    CREATE TABLE ##MyTemp2
    FullFile char (7) NOT NULL,
    EmployeeCount int NULL,
    DTL_Amount decimal NULL,
    EmployeeType char (3) NULL,
    station char (3) NULL
    <CFOUTPUT query="ITE2">
    INSERT INTO ##MyTemp2 VALUES
    '#ITE2.TrueFile#',
    #ITE2.CountOfEmployee#,
    #ITE2.DTL_SUBTOT#,
    '#ITE2.EMPTYPE#',
    '#ITE2.ARPT_CD#'
    </CFOUTPUT>
    </CFQUERY>
    So even though the above works, I could use some help in reading/writing the output.  I've tried several things similar to below, but they don't work.  It't telling me ITE_Temp2 does not exist.  It's not easy to find good examples of creating temporary tables in SQL Server.
    <CFQUERY name="QueryTest2" datasource="SkynetSQL">
    SELECT *
    FROM ITE_Temp2
    </CFQUERY>
    <CFOUTPUT query="ITE_Temp2">
    Output from Temp Table<br>
    <p>FullFile: #FullFile#, EmployeeCount: #EmployeeCount#</p>
    </CFOUTPUT>
    Thanks for any help/advice.
    Gary.

  • How to use a SAP table in Validation Look Up

    Hi Experts,
    I my job for every record in the input data set I need to check for the value of the data set column in the SAP table.
    I am using a validation transform and am using the "Exists in Table" option, where I am specifying the column in the SAP table to look up.
    It is giving me an error BODI-1112468 saying that SAP table cannot be used in Validation Look up.
    Please suggest any other way to resolve it.
    Thanks in advance.

    user12088323 wrote:
    How to use a Sybase table in Oracle SQL statement?
    Sybase version : 11.9.2.4
    Oracle version : 10.2.05
    Thanks.Any Oracle client connected to the Oracle database can access Sybase data through the <font style="background-color: #FFFFCC">Database Gateway for Sybase</font> (it requires an additional license) or the <font style="background-color: #FFFFCC">Database gateway for ODBC</font> (it's free).
    The Oracle client and the Oracle database can reside on different machines. The gateway accepts connections only from the Oracle database.
    A connection to the gateway is established through a database link when it is first used in an Oracle session. In this context, a connection refers to the connection between the Oracle database and the gateway. The connection remains established until the Oracle session ends. Another session or user can access the same database link and get a distinct connection to the gateway and Sybase database.
    Database links are active for the duration of a gateway session. If you want to close a database link during a session, you can do so with the ALTER SESSION statement.
    To access the Sybase server, you must create a <font style="background-color: #FFFFCC">database link</font>. A public database link is the most common of database links.
    SQL> CREATE PUBLIC DATABASE LINK dblink CONNECT TO
    2  "user" IDENTIFIED BY "password" USING 'tns_name_entry';
    --dblink is the complete database link name.
    --tns_name_entry specifies the Oracle Net connect descriptor specified in the tnsnames.ora file that identifies the gatewayAfter the database link is created you can verify the connection to the Sybase database, as follows:
    SQL> SELECT * FROM DUAL@dblink;
    Configuring Oracle Database Gateway for Sybase
    <font style="background-color: #FFFFCC">{message:id=10649126}</font>

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

  • How to use Oracle partitioning with JPA @OneToOne reference?

    Hi!
    A little bit late in the project we have realized that we need to use Oracle partitioning both for performance and admin of the data. (Partitioning by range (month) and after a year we will move the oldest month of data to an archive db)
    We have an object model with an main/root entity "Trans" with @OneToMany and @OneToOne relationships.
    How do we use Oracle partitioning on the @OneToOne relationships?
    (We'd rather not change the model as we already have millions of rows in the db.)
    On the main entity "Trans" we use: partition by range (month) on a date column.
    And on all @OneToMany we use: partition by reference (as they have a primary-foreign key relationship).
    But for the @OneToOne key for the referenced object, the key is placed in the main/source object as the example below:
    @Entity
    public class Employee {
    @Id
    @Column(name="EMP_ID")
    private long id;
    @OneToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="ADDRESS_ID")
    private Address address;
    EMPLOYEE (table)
    EMP_ID FIRSTNAME LASTNAME SALARY ADDRESS_ID
    1 Bob Way 50000 6
    2 Sarah Smith 60000 7
    ADDRESS (table)
    ADDRESS_ID STREET CITY PROVINCE COUNTRY P_CODE
    6 17 Bank St Ottawa ON Canada K2H7Z5
    7 22 Main St Toronto ON Canada     L5H2D5
    From the Oracle documentation: "Reference partitioning allows the partitioning of two tables related to one another by referential constraints. The partitioning key is resolved through an existing parent-child relationship, enforced by enabled and active primary key and foreign key constraints."
    How can we use "partition by reference" on @OneToOne relationsships or are there other solutions?
    Thanks for any advice.
    /Mats

    Crospost! How to use Oracle partitioning with JPA @OneToOne reference?

  • When to use global temporary tables?

    which are the probable situations when one can think of using global temporary tables?

    In my experience, most often GTTs are used by developers from other RDBMSs who have become used to needing 'intermediate tables' created on the fly to hold data while they 'loop and commit to free locks'.
    These developer may not have had enough exposure to Oracle's concurrency model and therefore use the 'other' concurrency model as the basis for an application port - usually followed up by a call to the forum for assistance in performance tuning. <g>
    That said, legitimate uses for GTTs include staging or scrubbing table for data transport or preparation, eg: ETL into a warehouse, when the intermediate data is
    a) reproducible (therefore does not need to be logged); and
    b) the results of the intermediate operation, but not the source, are stored in permanent tables.
    Some developers also use GTTs to hold the equivalent to a 'temporary materialized view' specifically for complex reporting purposes.

  • Oracle temporary tables

    Hi ,
    we have a application for transfering data approx 1 million records from one schema to another. the data is first inserted into a table temporarily and after all the data is transfered the data is manually deleted from this table.
    we are planning to replace this table with Oracle Temporary table. Can you please let us know if this would increase the performance and why???
    Thanks & Regards
    Saroj

    In theory it should, but you won't know whether the difference is going to be noticeable until you try.
    Oracle has to do much less work with global temporary tables. It knows no other sessions will be using the data so it does not need to bother with rollback segments or locks. It also does not bother with redo because there will not be a need to recover.

  • How to use oracle fusion middleware for integration project ?

    hi all,
    in my projects, customer (a bank) already has many applications (bankend & frontend) that are complicatedly connected. I intend to use oracle fusion middleware to integrate all applications and make adding new applications in the future easier. I have worked through documents in the oracle website but I still have no idea how to use oracle fusion middleware to address the requirement, besides oracle fusion middleware includes a bundle of applications I don't know which one I would need.
    could anyone give me some instructions ? appreciate your help.
    thank very much,

    Hi,
    For this short description of environment, could be ODI is a incredible tool to help you...
    Take a look into my blog that has a lot of concepts and "how to do" instructions.... http://odiexperts.com
    However to try help you, what are the used technologies?
    Where are you from?
    Cezar Santos
    http://odiexperts.com

  • Query hint to force SQL to use a temporary table in a CTE query?

    Hi,
    is it possible to tell SQL Server to create a temporary table by itself when I'm using a CTE in my query?
    I have a query starting with a CTE where I group by my record, then another recursive CTE use the first CTE and finally my select statement like:
    with cte as (select a,b,c,row_number() ...  from mytable group by a,b,c)
    , cte2(select .... from cte A where rownum =1
    union all select ... from cte B inner join cte2 C on ......
    select * from cte2
    this query is very very slow, but if I store the first CTE into a temporary table and then cte2 consume my temp table rather than the CTE, the query is very fast.
    creating the temp table took 10sec and the select took 20sec
    while the initial query didnt return anything  after 2minutes!!!
    so what can I try to do to have the query running in less than 30sec without creating the temp table first?
    is there a query hint which can be used to tell SQL Server to convert the CTE into a temp table?
    as I have a lot of query to manage, I want to simplify my model without relying in temporary tables every time I suffer this issue...
    thanks.

    What is your SQL Server version?
    There is no hint to materialize results of cte into a temp table, so the solution you tried is the best you can have.
    I think the idea of materializing CTE into a temp table was already proposed on Connect. Try searching for this and vote.
    For every expert, there is an equal and opposite expert. - Becker's Law
    My blog
    My TechNet articles

  • Slow first connection using Oracle 10g xe and Visual Studio 2008

    {noformat}
    Good day,
    I'm slightly unaccustomed to using forums, so bear with me.
    My initial connection to the Oracle database takes approximately 30 seconds. It seems to be waiting for a connection before timing out and trying another connection which works, as all subsequent connections work immediately. I'm unsure how other people's responses in forums can help me due to the plethora of configurations, so here's mine. My comprehension of the oracle world is still growing, you'll have to explain the terms you're using for me, Hoping you can help.
    I'm using Visual Studio 2008, set to use 32 bit debug mode, on a Windows 7 Pro platform. Also using Oracle 10g Xe, and have installed the 32 bit version of ODAC 11.2 (11.2.0.1) to aid making a connection from Visual Studio to Oracle.
    I have a database set up and a user with system admin rights. This is all local for a programming project and will never see the light of day outside of my personal machine.
    I am using code to connect, not the GUI. I wish to code this project completely without the aid of the GUI. so my connection string within Visual Studio C# is (pw/id hidden)...
    string xe = "Data Source=xe;User Id=xxxxx;Password=xxxxx;";
    OracleConnection conn = new OracleConnection(xe);
    My c:\devsuitehome\network\admin\sqlnet.ora file is this:
    # sqlnet.ora Network Configuration File: C:\DevSuiteHome\network\admin\sqlnet.ora
    # Generated by Oracle configuration tools.
    SQLNET.AUTHENTICATION_SERVICES= (NTS)
    NAMES.DIRECTORY_PATH= (LDAP, TNSNAMES, EZCONNECT, ONAMES, HOSTNAME)
    And my c:\devsuitehome\network\admin\TNSNames.ora file is this:
    tnsnames.ora Network Configuration File: C:\DevSuiteHome\network\admin\tnsnames.ora
    Generated by Oracle configuration tools.
    XE =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
    (SERVICE_NAME = xe)
    EXTPROC_CONNECTION_DATA =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <machine name)(PORT = 1521))
    (CONNECT_DATA =
    (SERVICE_NAME = PLSExtProc)
    Just for good measure, my tnsping xe shows:
    "Used paramter files:<br/>
    c:\devsuitehome\network\admin\sqlnet.ora<br/><br/>
    Used TNSNAMES adapter to resolve the alias<br/>
    Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = xe)))
    OK (0 msec)"
    So, how can I make that initial connection faster so I don't spend 15 years testing my application due to slow start-ups? :)
    Thank you.
    Kevin.
    {noformat}
    Edited by: 832285 on Jan 29, 2011 10:08 AM
    Edited by: 832285 on Jan 29, 2011 10:10 AM

    I have formatted my hard drive since my first post. I was running window 64 bit with a higher version of the ODAC and that proved to crash my machine with faulty error messages about memory. I have reverted to a previous version of the ODAC tools and everything works very smooth now. Still the connection time is consistently 20 seconds or longer on the first attempt.
    Just a little more information.. I am currently taking a college course with 15 other students, as you can tell by the impersonal machine name, where programming using visual studio 2008, and Oracle 10g xe is expected. All of us are using a 64 bit environment and we all have difficulties cutting down the load time of making the first connection to Oracle. Some people are longer making the connection, but none are shorter.
    One other note. After the first connection is made, taking 20 or more seconds, and is closed, all subsequent openings of the connection are instantaneous, for all of us.
    If there is ANYTHING more I can get for you, please let me know. With my environment stable as it is, I will not need to format or change any information for the foreseeable future.
    Here is the information you requested
    1 The connection method I am using, I have chosen the manual connection for you, however the delay exists if the connection is made through the GUI as well.
    Historically, I am getting slow connection speeds through adding the connection through the GUI or by a manual connection. Here is how I am doing it manually. I have the connection being created in 20 seconds, which is the best I can get.
    Imports Oracle.DataAccess.Client
    Also included project reference: oracle.dataaccess / version 2.111.6.20
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim connString As String = "Data Source=XE;User Id=abc;Password=abc;"
            Dim con As OracleConnection = New OracleConnection()
            con.ConnectionString = connString
            Try
                con.Open()
                MessageBox.Show("Connected!")
                con.Close()
                con.Dispose()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End SubMy current TNS Ping results
    TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 16-FEB-2011 01:02:36
    Copyright (c) 1997, 2005, Oracle.  All rights reserved.
    Used parameter files:
    C:\oraclexe\app\oracle\product\10.2.0\server\network\admin\sqlnet.ora
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
    OK (0 msec)2 Connection to SQL plus is instantaneous.
    I fought for weeks about the ODAC version 11.2.0.1 that you see in the previous post, and that would be a whole new thread. Suffice it to say I have a reliable environment to program in with this 10.2.0.1.0 version that I am running now, and the connection time has not changed, it is still minimum 20 seconds load time, sometimes up to 25.
    3 Ram usage in my typical environment
    I am running this laptop with 4 gigs of ram. This is a typical environment I would be running my application in.
    Physical memory
    total 4090
    cached 1753
    available 2345
    free 656
    system
    handles 27141
    threads 911
    processes 70
    commit megs 2860/8179
    kernel memory megs
    paged 201
    nonpaged 52
    4 I formatted my machine and reinstalled the Windows 7 professional operating system as of a few nights ago. The Oracle software on my machine is
    Oracle Database 10g express edition
    ODAC 11.1.0
    I amm not sure what filename you would need in addition to the product names that I have installed.
    5 The information from the SET command is
    ALLUSERSPROFILE=C:\ProgramData
    APPDATA=C:\Users\stepheke\AppData\Roaming
    CommonProgramFiles=C:\Program Files\Common Files
    CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
    CommonProgramW6432=C:\Program Files\Common Files
    COMPUTERNAME=STEKEV0908
    ComSpec=C:\Windows\system32\cmd.exe
    FP_NO_HOST_CHECK=NO
    HOMEDRIVE=C:
    HOMEPATH=\Users\stepheke
    LOCALAPPDATA=C:\Users\stepheke\AppData\Local
    LOGONSERVER=\\STEKEV0908
    NUMBER_OF_PROCESSORS=2
    oracle_sid=xe
    OS=Windows_NT
    Path=C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Oracleapp\stepheke\product\11.1.0\client_1;C:\Oracleapp\stepheke\product\11.1.0\client_1\bin;C:\oraclexe\app\oracle\product\10.2.0\server\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program Files (x86)\Windows Live\Shared
    PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    PROCESSOR_ARCHITECTURE=AMD64
    PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 23 Stepping 10, GenuineIntel
    PROCESSOR_LEVEL=6
    PROCESSOR_REVISION=170a
    ProgramData=C:\ProgramData
    ProgramFiles=C:\Program Files
    ProgramFiles(x86)=C:\Program Files (x86)
    ProgramW6432=C:\Program Files
    PROMPT=$P$G
    PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
    PUBLIC=C:\Users\Public
    SystemDrive=C:
    SystemRoot=C:\Windows
    TEMP=C:\Users\stepheke\AppData\Local\Temp
    TMP=C:\Users\stepheke\AppData\Local\Temp
    USERDOMAIN=stekev0908
    USERNAME=stepheke
    USERPROFILE=C:\Users\stepheke
    VS90COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\
    windir=C:\Windows

Maybe you are looking for

  • Missing Topics in Topics box

    As you can see there is a lot of missing subtopics under the Main Menu Overview topic in the left hand Topics Box. These topics all show up in the ,.chm file. Can anyone tell me how to correct this. I can't add the missing topics to the printed doc.

  • 'mac book pro-will not start although logo appears'

    Help! Stuck in start up. I shut down using power button as it was hung up and would not respond using force quit. i turned the computer on and it shuts itself down after several minutes. The apply logo is displayed and the band is only partially blac

  • Changing the Database connection after deployment.

    Dear All, I have deployed an application and want to change the connection to live database so how do i change it.. Do i have to redeploy the application ?. Both db's are oracle. -Thanks

  • SD Reports  issue

    Hi,    can any one help me out in detail  About  SD REPORTS. Thanks Edited by: samaahmed on Feb 17, 2010 4:32 PM

  • Where can I get detailed info on bug fixes?

    Hi, Where can I get more information on bug fixes that are listed in the release notes of each version? For instance, I am interested in each of the following ones. GRANITE-1215 - Workflow Monitoring via JMX CRX-4167 - Improved handling for backup pr