oracle 存儲過程中的語句
解答如下:
1、CREATE GLOBAL TEMPORARY TABLE T_TEMP 語句是創建一個臨時表,oracle中創建臨時表有兩種,一種是事務級的,一種是會話級的,當創建臨時表語句后面有ON COMMIT delete ROWS時表示該臨時表是事務級的,ON COMMIT PRESERVE ROWS 時表示該臨時表是會話級的。
2、execute immediate 是動態執行sql語句。
上面語句的意思是動態執行一條創建事務級臨時表的ddl語句。
oracle存儲過程中的select語句是怎樣的
create or replace procedure pro_test is begin select * from t_test; end pro_test; 這個存儲過程正確嗎? 昨天因為這個,耽誤了好久(在一個存儲過程中用了select語句,但既沒有用游標也沒有用into)。
在存儲過程(oracle數據庫)中如果用了select語句,要么使用"select into 變量"語句要么使用游標,oracle不支持單獨的select語句(如表述有誤請指出)。 select into 比較簡單,但是如果返回的是一個結果集就無法滿足要求了。
游標分Cursor型游標和SYS_REFCURSOR型游標兩種 Cursor型游標--不能用于參數傳遞 create or replace procedure pro_test() is cusor_1 Cursor is select 字段名 from 表名 where 條件; (或者 select class_name into cursor_2 from class where 。 。
。; cursor的另一種用法,需要寫在begin和end之間) begin select class_name into cursor_2 from class where 。
; 可以使用 for xxx in cursor loop 。 。
end loop; --對Cursor進行遍歷 end pro_test; SYS_REFCURSOR型游標 create or replace procedure pro_test(rsCursor out SYS_REFCURSOR) is cursor SYS_REFCURSOR; name varhcar(20); begin open cursor for select name from student where 。 。
。; --使用open來打開進行賦值 --遍歷 loop fetch cursor into name --fetch into來打開遍歷的每條數據 exit when cursor%NOTFOUND; --未找到記錄信息 dbms_output。
putline(xxxx); end loop; rsCursor := cursor; end pro_test;。
Oracle數據庫的存儲過程怎么寫
Oracle存儲過程基本語法:
CREATE OR REPLACE PROCEDURE 存儲過程名
IS
BEGIN
NULL;
END;解釋:
行1:
CREATE OR REPLACE PROCEDURE 是一個SQL語句通知Oracle數據庫去創建一個叫做skeleton存儲過程, 如果存在就覆蓋它;
行2:
IS關鍵詞表明后面將跟隨一個PL/SQL體。
行3:
BEGIN關鍵詞表明PL/SQL體的開始。
行4:
NULL PL/SQL語句表明什么事都不做,這句不能刪去,因為PL/SQL體中至少需要有一句;
行5:
END關鍵詞表明PL/SQL體的結束。
oracle 數據庫 怎么執行存儲過程
一。 概述 Oracle存儲過程開發的要點是:
1; 使用Notepad文本編輯器,用Oracle PL/SQL編程語言寫一個存儲過程;
2; 在Oracle數據庫中創建一個存儲過程;
3; 在Oracle數據庫中使用SQL*Plus工具運行存儲過程;
4; 在Oracle數據庫中修改存儲過程;
5; 通過編譯錯誤調試存儲過程;
6; 刪除存儲過程; 二。環境配置
包括以下內容:
1; 一個文本編輯器Notepad;
2; Oracle SQL*Plus工具,提交Oracle SQL和PL/SQL 語句到Oracle database。
3; Oracle 10g express數據庫,它是免費使用的版本;
需要的技巧:
4; SQL基礎知識,包括插入、修改、刪除等
5; 使用Oracle's SQL*Plus工具的基本技巧;
6; 使用Oracle's PL/SQL 編程語言的基本技巧; 三。寫一個存儲過程
在Notepad, 寫下:
CREATE OR REPLACE PROCEDURE skeleton IS BEGIN NULL; END; 把文件存為*.
讓我們一行行遍歷這個存儲過程:
1 CREATE OR REPLACE PROCEDURE skeleton 2 IS 3 BEGIN
4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE 是一個SQL語句通知Oracle數據庫去創建一個叫做skeleton存儲過程, 如果存在就覆蓋它; 行2: IS關鍵詞表明后面將跟隨一個PL/SQL體。
行3: BEGIN關鍵詞表明PL/SQL 體的開始。
四。創建一個存儲過程
SQL語句CREATE OR REPLACE PROCEDURE在Oracle數據庫中創建、編譯和保存一個存儲過程。
從Window打開SQL*Plus并且從SQL*Plus 登錄到你的數據庫;打開*文件。
在SQL命令提示符下輸入以下命令:
SQL@skeleton SQL/ SQL*Plus裝載*文件的內容到 SQL*Plus緩沖區并且執行SQL*Plus語句;SQL*Plus 會通知你存儲過程已經被成功地創建。
oracle的存儲過程不能使用drop語句嗎
存儲過程里面, 一般只寫 DML 的語句。
也就是基本的 SELECT . INSERT, DELETE , UPDATE 這一類的語句。
如果你要在存儲過程里面, 執行 DDL 語句。
也就是 CREATE, ALTER, DROP 這一類的語句。
那么需要使用動態 SQL 來處理。
也就是
EXECUTE IMMEDIATE ( 'CREATE TABLE test( id int ) ' );
EXECUTE IMMEDIATE ( 'DROP TABLE test ' );
這樣的方式來處理。
對于 DDL 語句, 這類語句, 如果成功了, 就生效了, 不能回滾的。
也就是
當你 Drop Table 某個表的時候, 執行成功了, 表就被刪除了。
不需要你 Commit 的。
你也無法 Rollback , 然這個表不刪除了。
轉載請注明出處華閱文章網 » oracle存儲過程語句