1. 程式人生 > >oracle儲存過程中使用臨時表

oracle儲存過程中使用臨時表


1、儲存過程中動態建立表失敗,提示許可權問題,execute immediate 'create global temporary t1 as select * from table1';
 解決:
 1-授權 create any table
 2-儲存過程中加AUTHID CURRENT_USER

2、建立完全域性臨時表資料查詢為空,需要用到臨時表的型別知識,加關鍵字on commit preserve rows即可
   
3、刪除時候遇到問題

失敗:
14452, 00000, "attempt to create, alter or drop an index on temporary table already in use"
// *Cause:  An attempt was made to create, alter or drop an index on temporary
//          table which is already in use.
// *Action: All the sessions using the session-specific temporary table have
//          to truncate table and all the transactions using transaction
//          specific temporary table have to end their transactions.
解決:
truncate後drop

相關推薦

Oracle儲存過程臨時的建立、刪除,變數的定義和使用

  create or replace procedure Test_GetOaUserInfo  as   --authid current_user操作當前儲存過程的當前使用者,否則提示許可權不足,但是這樣儲存過程這能執行一次   --,或者GRANT CREATE A

oracle儲存過程建立臨時

在oracle的儲存過程中,不能直接使用DDL語句,比如create、alter、drop、truncate等。 那如果我們想在儲存過程中建立一張臨時表就只能使用動態sql語句了: create o

oracle儲存過程使用臨時

1、儲存過程中動態建立表失敗,提示許可權問題,execute immediate 'create global temporary t1 as select * from table1';  解決:  1-授權 create any table  2-儲存過程中加AUT

Oracle 儲存過程執行動態SQL,動態

create or replace procedure mw_sys.clearrubbishdatefy2 is type table_type is table of mw_app.mwt_ud_yscsjdl.tablename%type; tablenameAr

Oracle 儲存過程傳送郵件,並支援使用者驗證 中文標題和內容

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

oracle儲存過程 RETURNING INTO的含義

DECLARE Row_id ROWID; info VARCHAR2(40); BEGIN INSERT INTO dept VALUES (91, 'SERVICE', 'BEIJING') RETURNING rowid,

oracle儲存過程%type的含義

例子: CREATE OR REPLACE procedure getDeptById ( v_deptno in dept.deptno%type ) is v_dname dept.dname%type; v_loc dept.loc%type; begin select dn

Oracle儲存過程跳出迴圈的寫法

記錄exit和return的用法 1:exit用來跳出迴圈 loop IF V_KBP IS NULL THEN EXIT; END IF; end loop; 2:return跳出儲存過程 loop IF V_KBP IS NULL

Oracle儲存過程包的使用舉例

一、建立測試表 --建立測試表 create table pes(ID number(10),NAME varchar2(20),pwd varchar2(20),TYPE VARCHAR(20)); insert into pes values(1,'xzw','88

Sqlserver 遊標&儲存過程&臨時混合使用例項

通過巢狀,根據表中記錄的表名與列名到指定位置取值。 --宣告儲存過程 ProPIMS if (exists (select * from sys.objects where name = 'ProPIMS')) drop proc ProPIMS go create procedure

Oracle 儲存過程 如何使用事務Transaction 自主事務 自治事務

  Oracle基礎 儲存過程和事務 一、事務和儲存過程   在儲存過程中如何使用事務。當需要在儲存過程中同時執行多條新增、修改、刪除SQL語句時,為了保證資料完整性,我們需要使用事務。使用方式和在PL-SQL中非常相似,但也有一些區別。   --帶事務的儲存過程 C

oracle儲存過程is和as 的使用

在儲存過程(PROCEDURE)和函式(FUNCTION)中兩者都可以使用,但是有區別:使用IS 將無法使用除錯模式除錯該儲存過程(函式) 在檢視(VIEW)中只能用AS不能用IS; 在遊標(CURSO

Oracle儲存過程游標For迴圈使用

   procedure copy(a_id int) is     cursor t_cursor is       select * from table f where f.id = a_id;       v_row table%rowtype; begin

Oracle 儲存過程的DDL語句

Oracle的儲存過程,是我們使用資料庫應用開發的重要工具手段。在儲存過程中,我們大部分應用場景都是使用DML語句進行資料增刪改操作。本篇中,我們一起探討一下資料定義語句DDL在儲存過程中使用的細節和要點。 1、“借道而行”的DDL 從Oracle PL/SQL和儲存過

Oracle 儲存過程的迴圈語句寫法

首先科普一下: oracle 遊標屬性 sql%found sql%notfound sql%rowcount  當執行一條DML語句後,DML語句的結果儲存在四個遊標屬性中,這些屬性用於控制程式流程或者瞭解程式的狀態。當執行DML語句時,PL/SQL開啟一個內建遊標並處理結果,遊標是維護查詢結果的記憶體中

oracle儲存過程使用execute immediate執行sql報ora-01031許可權不足的問題

--問題描述: 使用者在儲存過程中呼叫execute immediate 執行 create table語句報錯 ORA-01031, 並且反映直接執行該語句無報錯。--原因根據問題可以發現使用者確實有create table的許可權,查詢dba_role_privs 和 d

Oracle儲存過程多層巢狀遊標的用法

Oracle sql指令碼程式碼   CREATE OR REPLACE   PROCEDURE P_DELETE_QK (pId in NUMBER, deep in NUMBER) AS   -- pId = 分類ID  deep = 深度,層級   on

oracle儲存過程is和as的區別

create or replace procedure imp_person_medical(v_t_table_name varchar2,v_result out varchar2) as /*

sql(joinon與where區別) / NVL函式 / oracle儲存過程is和as區別 / JAVA呼叫資料庫儲存過程

left join :左連線,返回左表中所有的記錄以及右表中連線欄位相等的記錄。 right join :右連線,返回右表中所有的記錄以及左表中連線欄位相等的記錄。 inner join: 內連線,又叫等值連線,只返回兩個表中連線欄位相等的行。 full join:外連線,返回兩個表中的行:left jo

Oracle儲存過程ORA-00942: 或檢視不存在問題解決

今天在寫儲存過程的時候,發現一個很詭異的問題,儲存過程裡就一個最簡單的SELECT動態SQL語句。編寫完成以後,執行這個儲存過程,總是提示ORA-00942: table or view does