Oracle中创建和删除临时表

Jun 07, 2016 pm 04:43 PM

CREATE GLOBAL TEMPORARY TABLE TABLENAME ( COL1 VARCHAR2(10), COL2 NUMBER ) ON COMMIT PRESERVE(DELETE) ROWS ; --O

CREATE GLOBAL TEMPORARY TABLE TABLENAME (
    COL1  VARCHAR2(10),
    COL2  NUMBER
 ) ON COMMIT PRESERVE(DELETE) ROWS ;

--ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后Oracle将截断表(删除全部行)
---------------------------------------
在Oracle8i中,可以创建以下两种临时表:
1。会话特有的临时表
CREATE GLOBAL TEMPORARY ( )
 ON COMMIT PRESERVE ROWS;

2。事务特有的临时表
CREATE GLOBAL TEMPORARY ( )
 ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY TABLE MyTempTable
所建的临时表虽然是存在的,但是你试一下insert 一条记录然后用别的连接登上去select,记录是空的,明白了吧。
 下面两句话再贴一下:
--ON COMMIT DELETE ROWS 说明临敀?表是事务指定,每次提交后ORACLE将截断表(删除全部行)
--ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。


procedure 执行一系列的操作
package  可以在其中定义一些量、函数、过程等;

 存储过程里不能直接使用DDL语句,,所以只能使用动态SQL语句来执行

create procedure pro
 as
 str varchar2(100);
 begin

str := 'CREATE GLOBAL TEMPORARY TABLE admin_work_area
        (startdate DATE,
          enddate DATE,
          class CHAR(20))
      ON COMMIT DELETE ROWS’;
execute immediate str;
 end;


删除:

truncate table  MyTempTable
 drop table  MyTempTable

ORA-22992: 无法使用从远程表选择的 LOB 定位器 

解决办法:
可以先创建一个临时表,然后把远程有LOB字段的表克隆到临时表中,然后再进行链接操作
1.本地创建临时表
Sql代码
 
create global temporary table photo_temp as select * from photo@photo_link where 1=2 ;

2.用database link导入远程数据到临时表
Sql代码
 
insert into photo_temp select * from photo@photo_link;--不要commit;否则临时表中数据消失

3.把临时表数据插入到永久表中:
Sql代码
insert into photo select * from photo_temp;
commit;

实例:

create global temporary table pic_temp as select * from WH_REGISTERPIC@ogdpshdb where 1=2 ;
insert into pic_temp select * from WH_REGISTERPIC@ogdpshdb;
insert into WH_REGISTERPIC select * from pic_temp;
commit;

删除临时表:

truncate table  pic_temp ;
drop table  pic_temp ;

解决普通用户在存储过程中无权建临时表问题:

在包头中加 AUTHID CURRENT_USER

例子:

create or replace package WH_Info_Output AUTHID CURRENT_USER is

  -- Author  : 
  -- Created : 2014年9月2日 15:27:25
  -- Purpose : 

  --删除原有数据导入全部数据
  procedure SP_WH_Info_Output_All(Fid in number default 1);
  -- Public type declarations
  --传入参数默认0:导入没有的数据  1:删除原有数据导入全部数据
  procedure SP_WH_Info_Output(Fid in number default 0);

  --导入WH_REGISTERPIC表(含有BLOG字段) 0:导入没有的数据  1:删除原有数据导入全部数据
  procedure SP_WH_PIC_BLOGInfo_Output(Fid in number default 0);
 
end WH_Info_Output;

 

  --导入WH_REGISTERPIC表(含有BLOG字段) 0:导入没有的数据  1:删除原有数据导入全部数据
  procedure SP_WH_PIC_BLOGInfo_Output(Fid in number default 0)
  is
  str varchar2(300);
  begin
  if Fid = 0 then
  str:='create global temporary table pic_temp as select * from WH_REGISTERPIC@ogdpshdb where 1=2'; 
  execute immediate str; 
  str:='insert into pic_temp select * from WH_REGISTERPIC@ogdpshdb w where (w.WELLID, w.PICTYPECODE, w.VERSIONNO, w.PICFILENAME) not in (select WELLID, PICTYPECODE, VERSIONNO, PICFILENAME from WH_REGISTERPIC)'; 
  execute immediate str;    ----使用动态SQL语句来执行 
  str:='insert into WH_REGISTERPIC select * from pic_temp'; 
      execute immediate str; 
  end if;
 

  end SP_WH_PIC_BLOGInfo_Output;

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

本文永久更新链接地址:

linux

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Mar 19, 2025 pm 03:51 PM

この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? Mar 18, 2025 pm 12:01 PM

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

MySQLの大きなデータセットをどのように処理しますか? MySQLの大きなデータセットをどのように処理しますか? Mar 21, 2025 pm 12:15 PM

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? 人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? Mar 21, 2025 pm 06:28 PM

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

ドロップテーブルステートメントを使用してMySQLにテーブルをドロップするにはどうすればよいですか? ドロップテーブルステートメントを使用してMySQLにテーブルをドロップするにはどうすればよいですか? Mar 19, 2025 pm 03:52 PM

この記事では、ドロップテーブルステートメントを使用してMySQLのドロップテーブルについて説明し、予防策とリスクを強調しています。これは、バックアップなしでアクションが不可逆的であることを強調し、回復方法と潜在的な生産環境の危険を詳述しています。

外国の鍵を使用して関係をどのように表現しますか? 外国の鍵を使用して関係をどのように表現しますか? Mar 19, 2025 pm 03:48 PM

記事では、外部キーを使用してデータベース内の関係を表すことで、ベストプラクティス、データの完全性、および避けるべき一般的な落とし穴に焦点を当てています。

JSON列にインデックスを作成するにはどうすればよいですか? JSON列にインデックスを作成するにはどうすればよいですか? Mar 21, 2025 pm 12:13 PM

この記事では、クエリパフォーマンスを強化するために、PostgreSQL、MySQL、MongoDBなどのさまざまなデータベースでJSON列にインデックスの作成について説明します。特定のJSONパスのインデックス作成の構文と利点を説明し、サポートされているデータベースシステムをリストします。

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? 共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? Mar 18, 2025 pm 12:00 PM

記事では、準備されたステートメント、入力検証、および強力なパスワードポリシーを使用して、SQLインジェクションおよびブルートフォース攻撃に対するMySQLの保護について説明します。(159文字)

See all articles