當前位置:首頁 » 存儲配置 » oracle存儲過程表

oracle存儲過程表

發布時間: 2023-01-12 18:43:17

㈠ oracle存儲過程創建表

CREATE OR REPLACE PROCEDURE list_xs_name as
str_sql varchar2(2000);
begin
str_sql := 'create global temporary table xs_name (xh int,name varchar2(255),kc varchar2(255),fs int) on commit preserve rows';
execute immediate str_sql;
str_sql := 'select * from xs_name';
execute immediate str_sql;
dbms_output.put_line(str_sql);
END;

㈡ oracle 存儲過程建表

這個過程就行了。。
create or replace procere wym
authid current_user
is
vn_ctn number(2);
begin
select count(*) into vn_ctn from user_all_tables a where a.table_name like upper('invbasdoc');
if vn_ctn > 0 then
execute immediate 'drop table invbasdoc';
end if;
execute immediate 'create table invbasdoc as select * from test_abcd';
end ;

原來的過程中:execute immediate 'drop table invbasdoc'; 當如果資料庫中不存在這張表的時候就會報錯的。。
上面是對資料庫中是否存在表進行了判斷,因此能夠避免「表不存在」這樣的錯誤。。

㈢ oracle存儲過程中建表

在存儲過程中建立表
要用 execute immediate('CREATE or replace table *****') 這樣的語句格式
ddl 語句無法在orace 的存儲過程直接執行,要用 execute immediate 來調用。

㈣ Oracle怎麼導出存儲過程

1、首先登錄到資料庫中,點擊右上角有個工具欄,點擊工具欄上的tools。

㈤ oracle存儲過程中臨時表的使用,該怎麼處理

1、Oracle臨時表分兩種,事務級臨時表和會話級臨時表
2、事務級臨時表在事務結束後會被清空,會話級臨時表在事務結束後不會清空而是在回話結束會自動清空。
3、如果是在存儲過程用臨時表並不需要從臨時表裡把數據返回到存儲過程之外的用事務級臨時表即可;如果要從臨時表裡把數據返回到存儲過程之外則需要用會話級臨時表(這個跟mssql不一樣,mssql用事務級臨時表也可以返回結果)
註:存儲過程里使用會話級臨時表時,往臨時表裡插入數據前要先清空臨時表內的數據

㈥ oracle 存儲過程 怎麼用內存表

一 臨時表語法

臨時表只在Oracle 8i 以及以上產品中支持。

語法:

<textarea cols="50"
rows="15" name="code" class="java:showcolumns">create global
temporary table 臨時表名 on commit preserve/delete rows
--preserve:SESSION級的臨時表,delete:TRANSACTION級的臨時表.</textarea>

SESSION級的臨時表數據在整個SESSION都存在,直到結束此次SESSION;而TRANSACTION級的臨時表數據在
TRANACTION結束後消失,即COMMIT/ROLLBACK或結束SESSION都會清除TRANACTION臨時表數據。

當會話退出或者用戶提交commit和回滾rollback事
務的時候,臨時表的數據自動清空,但是臨時表的結構以及元數據還存儲在用戶的數據字典中。當一個會話結束(用戶正常退出、用戶不正常退出、ORACLE實
例崩潰)或者一個事務結束的時候,Oracle對這個會話的表執行 TRUNCATE
語句清空臨時表數據,但不會清空其它會話臨時表中的數據。臨時表可以使用觸發器。

二 臨時表ORACLE資料庫與sqlserver的區別

ORACLE臨時表,transaction或者session結束,會清空表數據。但是表還存在。

SQL SERVER臨時表,存儲在 tempdb 中,當不再使用時會自動刪除。

1 SQL SERVER臨時表是一種」內存表」,表是存儲在內存中的。ORACLE臨時表除非執行DROP TABLE,否則表定義會保留在數據字典中;

2 SQL SERVER臨時表不存在類似ORACLE臨時表事務級別上的功能;

3 SQL SERVER本地臨時表(#) 與 ORACLE的會話級別臨時表類似,但是在會話退出的時候,SQL SERVER會自動刪除,ORACLE不會刪除表;

4 SQL SERVER的全局臨時表(##) 是指多個連接共享同一片內存。當沒有指針引用該內存區域時,SQL SERVER自動釋放全局臨時表。

ORACLE不是一種內存中的資料庫,所以如果ORACLE類似SQL SERVER 頻繁的對臨時表進行建立和刪除,必定會影響性能。所以ORACLE會保留臨時表的定義直到用戶DROP TABLE。

在ORACLE中,如果需要多個用戶共享一個表(類似
SQL
SERVER的全局臨時表##),則可以利用永久表,並且在表中添加一些可以唯一標識用戶的列。利用觸發器和視圖,當用戶退出的時候,根據該登陸用戶的唯
一信息刪除相應的表中的數據。 但這種方法給ORACLE帶來了一定量的負載。

三 使用

1 判斷表不存在就創建表

<textarea cols="50" rows="15" name="code" class="java:showcolumns:firstline[1]">create ...
is
temptable_name varchar2(20);
v_count number(1);
begin
temptable_name := 'TEMP_TABLENAME';
select count(*) into v_count from tab where tname = temptable_name;
if(v_count = 0) then
execute immediate 'create table ...';
else
--其他表存在的操作
end if;</textarea>

2 注意使用時,可能會產生的錯誤:ORA-08103: object no longer
exists,ORA-14452 attempt to create, alter or drop an index on temporary
table already in use

ORA-14452 : 通過1的判斷,一般會解決該問題。如果在表使用時,執行刪除表操作,會出現該錯誤。

ORA-08103 : 使用事務級的臨時表時,如果,事務提交前執行刪除表操作或者在事務提交以後使用,就會產生這樣的問題。改成會話級別的可以解決這個問題,但是在會話級別的數據的正確性,可能會因為使用連接池,同一個會話中不同操作而產生錯誤。

㈦ oracle函數和存儲過程有什麼區別

一、主體不同

1、函數:當需要分析數據清單中的數值是否符合特定條件時,使用資料庫工作表函數。

2、存儲過程:是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,存儲在資料庫中,一次編譯後永久有效。

二、特點不同

1、函數:只能返回一個變數,可以嵌入sql中和存儲過程中使用。

2、存儲過程:用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行。存儲過程是資料庫中的一個重要對象。在數據量特別龐大的情況下利用存儲過程能達到倍速的效率提升。


三、功能不同

1、函數:不能用臨時表,只能用表變數,函數不能執行一組修改全局資料庫狀態的操作。可以作為查詢語句的一個部分來調用,由於函數可以返回一個表對象,所以在查詢中位於from關鍵字後面。

2、存儲過程:存儲過程需要讓sql的query可以執行,存儲過程可以返回參數,如記錄集。sql語句中不可以含有存儲過程。


㈧ 如何在Oracle的存儲過程中建表啊

可以在存儲過程中使用execute immediate 'sql';子句來創建表,例如Execute Immediate 'create table test(id int)';

熱點內容
qq怎麼訪問照片流 發布:2024-05-05 14:20:38 瀏覽:17
java實現的加密演算法 發布:2024-05-05 14:20:33 瀏覽:183
基礎it編程的書籍 發布:2024-05-05 14:19:47 瀏覽:441
網易夢之國伺服器ip 發布:2024-05-05 14:06:11 瀏覽:34
如何設置一個通俗易懂的密碼 發布:2024-05-05 13:52:21 瀏覽:621
新網易我的世界伺服器 發布:2024-05-05 13:42:44 瀏覽:662
演算法題寫錯了 發布:2024-05-05 13:34:57 瀏覽:804
sql按小時分組 發布:2024-05-05 13:26:25 瀏覽:94
張藝謀我們一家訪問人 發布:2024-05-05 12:38:05 瀏覽:111
美版安卓系統怎麼安裝 發布:2024-05-05 12:37:18 瀏覽:920