How to use Oracle global temporary table?

吃可爱长大的小学妹 提交于 2019-12-09 00:44:02

问题


I am attempting to use an Oracle global temporary table without physically creating a table in the database. The following code is not working. Can someone please explain the proper way to use global temporary tables?

declare
  global temporary table my_temp_table(column1 number) on commit preserve rows;    
begin
  insert into my_temp_table (column1) values (1);
  select * from my_temp_table;   
end;

回答1:


Try the below using execute immediate: it uses exception handler to bypass if table already exists; also note that you cannot use SQL select inside PLSQL

DECLARE
  l_column1 number;
begin
  begin
    execute immediate 'create global temporary table my_temp_table(column1 number) 
on commit   preserve rows';
  exception when others
    then
    dbms_output.put_line(sqlerrm);
  end;
  insert into my_temp_table (column1) values (1);
  select * into l_column1 from my_temp_table where column1=1;
  dbms_output.put_line('the temp value is '||l_column1);   
end;



回答2:


Unless you use EXECUTE IMMEDIATE you cannot create the table inside PL/SQL. Try this:

create global temporary table my_temp_table(column1 number) on commit preserve rows;    

insert into my_temp_table (column1) values (1);
select * from my_temp_table;   



回答3:


Oracle global temp tables are a bit different than you might be expecting.

You need to create the table and declare it as a global temp table.

Here is a good resource: http://www.oracle-base.com/articles/misc/temporary-tables.php



来源:https://stackoverflow.com/questions/20706724/how-to-use-oracle-global-temporary-table

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!