當前位置:首頁 » 存儲配置 » oracle存儲過程的編寫

oracle存儲過程的編寫

發布時間: 2023-06-14 06:29:36

⑴ Oracle資料庫存儲過程怎麼寫

1 CREATE OR REPLACE PROCEDURE 存儲過程名
2 IS
3 BEGIN
4 NULL;
5 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體的結束.
存儲過程創建語法:
create or replace procere 存儲過程名(param1 in type,param2 out type)
as
變數1 類型(值范圍); --vs_msgVARCHAR2(4000);
變數2 類型(值范圍);
Begin
Select count(*) into 變數1 from 表A where列名=param1;

If (判斷條件) then
Select 列名 into 變數2 from 表A where列名=param1;
Dbms_output。Put_line(『列印信息』);
Elsif (判斷條件) then
Dbms_output。Put_line(『列印信息』);
Else
Raise 異常名(NO_DATA_FOUND);
End if;
Exception
When others then
Rollback;
End;

⑵ oracle的存儲過程

第一步:找到proceres,右鍵新建

第二步:在name中輸入存儲過程名字(這里輸入的就是你以後需要調用的名字),parameters後是參數,在裡面定義參數的類型。
第三步:編寫存儲過程語句。
4 第四步: 存儲過程調用
CallableStatement
cs=conn.divpareCall("{call
mymd_gis_pro(?,?,?,?,?)}"); //1代表第一個參數,setint表示參數類型是int型 cs.setInt(1,188);

cs.setInt(2,12); cs.setInt(3,12);

...... //執行Oracle存儲過程
cs.execute();

⑶ Oracle 的存儲過程怎麼寫。

oracle 存儲過程的基本語法

1.基本結構
CREATE OR REPLACE PROCEDURE 存儲過程名字
(
參數1 IN NUMBER,
參數2 IN NUMBER
) IS
變數1 INTEGER :=0;
變數2 DATE;
BEGIN

END 存儲過程名字

2.SELECT INTO STATEMENT
將select查詢的結果存入到變數中,可以同時將多個列存儲多個變數中,必須有一條
記錄,否則拋出異常(如果沒有記錄拋出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 變數1,變數2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END;
...

3.IF 判斷
IF V_TEST=1 THEN
BEGIN
do something
END;
END IF;

4.while 循環
WHILE V_TEST=1 LOOP
BEGIN
XXXX
END;
END LOOP;

5.變數賦值
V_TEST := 123;

6.用for in 使用cursor
...
IS
CURSOR cur IS SELECT * FROM xxx;
BEGIN
FOR cur_result in cur LOOP
BEGIN
V_SUM :=cur_result.列名1+cur_result.列名2
END;
END LOOP;
END;

7.帶參數的cursor
CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
OPEN C_USER(變數值);
LOOP
FETCH C_USER INTO V_NAME;
EXIT FETCH C_USER%NOTFOUND;
do something
END LOOP;
CLOSE C_USER;

8.用pl/sql developer debug
連接資料庫後建立一個Test WINDOW
在窗口輸入調用SP的代碼,F9開始debug,CTRL+N單步調試

⑷ 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存儲過程怎麼寫循環

寫循環的操作方法和步驟如下:

1、第一步,編寫存儲過程的整體結構,然後定義變數,見下圖。

⑹ 用 Oracle 存儲過程編寫一個簡單的程序,要求

Oracle存儲過程開發的要點是:
• 使用Notepad文本編輯器,用Oracle PL/SQL編程語言寫一個存儲過程;
• 在Oracle資料庫中創建一個存儲過程;
• 在Oracle資料庫中使用SQL*Plus工具運行存儲過程;
• 在Oracle資料庫中修改存儲過程;
• 通過編譯錯誤調試存儲過程;
• 刪除存儲過程;
二.環境配置
包括以下內容:
• 一個文本編輯器Notepad;
• Oracle SQL*Plus工具,提交Oracle SQL和PL/SQL 語句到Oracle database。
• Oracle 10g express資料庫,它是免費使用的版本;

⑺ Oracle存儲過程如何編寫

號佔位符代替*其餘地方寫法固定*/CallableStatement cstmt = conn.prepareCall("{call p(?,?,?,?)}");/***告訴JDBC,這些個參數,哪些是輸出參數,輸出參數的類型用java.sql.Types來指定*下面的意思是,第3個?和第4個?是輸出參數,類型是INTEGER的*Types後面具體寫什麼類型,得看你的存儲過程參數怎麼定義的*/cstmt.registerOutParameter(3, Types.INTEGER);cstmt.registerOutParameter(4, Types.INTEGER);/***p是要調用的存儲過程的名字,存儲過程的4個參數,用4個?號佔位符代替*其餘地方寫法固定*/CallableStatement cstmt = conn.prepareCall("{call p(?,?,?,?是輸入參數,第3個是輸出參數,第4個既輸入又輸出*下面是設置他們的值,第一個設為3,第二個設為4,第4個設置為5*沒設第3個,因為它是輸出參數*/cstmt.setInt(1, 3);cstmt.setInt(2, 4);cstmt.setInt(4, 5);//執行cstmt.execute();//把第3個參數的值當成int類型拿出來int three = cstmt.getInt(3);System.out.println(three);//把第4個參數的值當成int類型拿出來int four = cstmt.getInt(4);System.out.println(four);//用完別忘給人家關了,後開的先關cstmt.close();conn.close();JDBC調用存儲過程,掌握這一個程序足夠了.以下是上面程序使用的存儲過程的代碼,我用的是Oracle資料庫,不過不論是什麼資料庫,對於你的程序,JDBC這一端寫法都是一樣的.create or replace procere p(v_a in number,v_b number,v_ret out number,v_temp in out number)isbeginif(v_a > v_b) thenv_ret := v_a;elsev_ret := v_b;end if;v_temp := v_temp + 1;end;

⑻ oracle中的存儲過程怎麼寫

Oracle存儲過程寫法實例

總結項目中寫的存儲過程例子:
Oracle存儲過程基本語法 存儲過程
1 CREATE OR REPLACE PROCEDURE 存儲過程名
2 IS/AS
3 BEGIN
4 NULL;
5 EXCEIPTION;
6 END;

1、創建存儲過程,後面可用is或者as:
create or replace procere PRO_COMPLAIN_TEMPLATE as

2、定義變數,此處用到了%TYPE和%ROWTYPE,參考 /database/201211/168564.html ,另外定義了一個游標,TEM_INSTANCE TEMPLATE_CUR%ROWTYPE這個類型定義必須要在游標定義之後:
NEED_DO_FOR_ZL INTEGER;
CURRENT_MAX_ID MEMO_TEMPLET.TEMPLET_ID%TYPE;
CURSOR TEMPLATE_CUR IS SELECT TEMPLET_NAME, TEMPLET_CONTENT FROM SYS_COMPLAINT_TEMPLET;
TEM_INSTANCE TEMPLATE_CUR%ROWTYPE;
3、begin開始塊:
begin

4、該插入語句使用了DBLINK,還有使用DBMS_OUTPUT.put_line('列印信息')進行信息輸出:
insert into MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT, TEMPLET_TYPE, TEMPLET_MEMO) (SELECT * FROM MEMO_TEMPLET@COMPANY);

SELECT COUNT(*) INTO NEED_DO_FOR_ZL FROM SYS_COMPLAINT_TEMPLET;
IF(NEED_DO_FOR_ZL > 0) THEN
DBMS_OUTPUT.put_line('列印信息');
SELECT MAX(TEMPLET_ID)+1 INTO CURRENT_MAX_ID FROM MEMO_TEMPLET;
DBMS_OUTPUT.put_line('MEMO_TEMPLET最大ID' || CURRENT_MAX_ID);
FOR TEM_INSTANCE IN TEMPLATE_CUR LOOP
INSERT INTO MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT,
TEMPLET_TYPE, TEMPLET_MEMO) VALUES (CURRENT_MAX_ID,
TEM_INSTANCE.TEMPLET_CONTENT, '7', NULL);
CURRENT_MAX_ID := CURRENT_MAX_ID + 1;
DBMS_OUTPUT.put_line(TEM_INSTANCE.TEMPLET_CONTENT);
END LOOP;
END IF;
COMMIT;
www.2cto.com
4、exception塊,使用WHEN OTHERS THEN,其中用raise可顯示錯誤信息:
exception
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('sqlcode : ' ||sqlcode);
raise;
ROLLBACK;
IF TEMPLATE_CUR%ISOPEN THEN
CLOSE TEMPLATE_CUR;
END IF;
DBMS_OUTPUT.put_line('列印信息');
end;

註:關於游標的使用,如果像本例中使用for循環去遍歷游標的話則不需要顯式的去用open/close
cursor打開和關閉游標,此處會自己處理,如果使用fetch
into的話就需要顯式開關游標,另外任意執行一個update操作,用隱式游標sql的屬性%found,%notfound,%rowcount,%isopen觀察update語句的執行情況,也可以使用來判斷游標狀態,如IF
TEMPLATE_CUR%ISOPEN THEN。

⑼ oracle怎麼寫存儲過程

給你示例你參考下:
----------------------------建立存儲過程:
CREATE OR REPLACE PROCEDURE P_name--存儲過程名字
(
i_var in int, --輸入參數1
o_var OUT varchar2 --輸出參數1
)
IS
v_STR VARCHAR2(200); --定義存儲過程內部的局部變數

BEGIN
--下面是存儲過程的主體實現部分
v_STR := i_var;
dbms_output.put_line(v_STR);
o_var := v_STR;
exception--錯誤異常處理部分
when others then
dbms_output.put_line(sqlerrm);--列印錯誤信息
END P_name;

-----------------------------------調用存儲過程示例:
declare
v_in int;
v_out varchar2(50);
begin
v_in :=100;
P_name (v_in,v_out); --調用存儲過程P_name
dbms_output.put_line('存儲過程輸入結果為:'||v_out);
exception--錯誤異常處理部分
when others then
dbms_output.put_line(sqlerrm);--列印錯誤信息
end;

⑽ 如何開發ORACLE存儲過程

簡單地講,Oracle存儲過程就是存儲在Oracle資料庫中的一個程序。 一. 概述 Oracle存儲過程開發的要點是: · 使用Notepad文本編輯器,用Oracle PL/SQL編程語言寫一個存儲過程; ·在Oracle資料庫中創建一個存儲過程; ·在Oracle資料庫中使用SQL*Plus工具運行存儲過程; ·在Oracle資料庫中修改存儲過程; · 通過編譯錯誤調試存儲過程; · 刪除存儲過程; 二.環境配置 包括以下內容: · 一個文本編輯器Notepad; · Oracle SQL*Plus工具,提交Oracle SQL和PL/SQL 語句到Oracle database。 · Oracle 10g express資料庫,它是免費使用的版本; 需要的技巧: · SQL基礎知識,包括插入、修改、刪除等 · 使用Oracle's SQL*Plus工具的基本技巧; · 使用Oracle's PL/SQL 編程語言的基本技巧; 三.寫一個存儲過程 存儲過程使用Oracle's PL/SQL 程序語言編寫,讓我們寫一個什麼工作都不做的存儲過程,我們可以編譯和運行它而不用擔心會對資料庫產生任何損害。 在Notepad, 寫下: CREATE OR REPLACE PROCEDURE skeleton IS BEGIN NULL; END; 把文件存為skeleton.sql. 讓我們一行行遍歷這個存儲過程: 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體的開始。 行4: NULL PL/SQL語句表明什麼事都不做,這句不能刪去,因為PL/SQL體中至少需要有一句; 行5: END關鍵詞表明PL/SQL體的結束 四.創建一個存儲過程 SQL語句CREATE OR REPLACE PROCEDURE在Oracle資料庫中創建、編譯和保存一個存儲過程。 從Window打開SQL*Plus並且從SQL*Plus登錄到你的資料庫;打開skeleton.sql文件. 在SQL>命令提示符下輸入以下命令: SQL>@skeleton SQL>/ SQL*Plus裝載skeleton.sql文件的內容到SQL*Plus緩沖區並且執行SQL*Plus語句;SQL*Plus 會通知你存儲過程已經被成功地創建。 現在你的存儲過程被創建,編譯和保存在你的Oracle資料庫,我們可以運行它。 五.運行一個存儲過程 從SQL*Plus 命令行提示符運行你的存儲過程使用EXECUTE命令,如下: SQL> EXECUTE skeleton; SQL*Plus 輸出一下信息確信存儲過程成功執行: PL/SQL procere successfully completed. 你也可以在一個無名PL/SQL塊內運行你的存儲過程,在SQL*Plus命令提示符下,它看起來像: SQL> BEGIN 2 SKELETON; 3 END; 4 / 現在我們已經運行了我們的存儲過程,我們如何修改它呢? 六.修改一個存儲過程 讓我們寫一個輸出字元串「Hello World!」的存儲過程,用Notepad打開你的skeleton.sql 文件,. 用DBMS_OUTPUT.PUT_LINE 過程調用去替換NULL語句,如下所示: CREATE OR REPLACE PROCEDURE skeleton IS BEGIN DBMS_OUTPUT.PUT_LINE('Hello World!'); END; 保存到文件skeleton.sql. 從SQL*Plus命令行, 打開文件skeleton.sql . SQL> @skeleton SQL> 1 CREATE OR REPLACE PROCEDURE skeleton 2 IS 3 BEGIN 4 DBMS_OUTPUT.PUT_LINE('Hello World!'); 5* END; SQL> / SQL*Plus 通知你存儲過程成功創建並輸出提示信息:Procere created. SQL> 用EXECUTE 命令運行你的存儲過程: SQL> EXECUTE skeleton; SQL*Plus顯示存儲過程運行成功:PL/SQL procere successfully completed. 我們想要的輸出字元串 "Hello World!"沒有出來,在顯示一個DBMS_OUTPUT.PUT_LINE 結果前需要運行一個SET命令,在SQL*Plus 命令行提示符,鍵入: SQL> SET SERVEROUTPUT ON 再次執行你的存儲過程: SQL> EXECUTE skeleton; 現在結果輸出了:Hello World! PL/SQL procere successfully completed. 七.調試一個存儲過程 當調試一個存儲過程時,遵循一樣的步驟,修改SQL文件,創建存儲過程,執行存儲過程,根據編譯器反饋的出錯信息進行修改,這一步是非常繁瑣的,需要依靠經驗。 在實際的商用存儲過程的開發調試過程中,由於涉及很多表、類型、游標、循環、條件等復雜的邏輯,和PL/SQL語句的靈活運用,編譯時會產生很多錯誤提示信息,程序員在根據這些錯誤信息定位,進行修正,再編譯最後得到正確的結構; 八.放棄一個存儲過程 如果在資料庫中你不在需要一個存儲過程你可以刪除它,SQL語句 DROP PROCEDURE 完成從資料庫中刪除一個存儲過程,DROP PROCEDURE 在SQL中被歸類為數據定義語言(DDL) 類操作,其他的例子有CREATE, ALTER, RENAME 和TRUNCATE。. 在SQL*Plus 命令提示符下,使用DROP PROCEDURE SQL 語句刪除你的叫做skeleton的存儲過程: SQL> DROP PROCEDURE skeleton; SQL*Plus assures us the procere has been removed: Procere dropped. 總結 本文詳細討論了如何使用Oracle工具開發Oracle商用存儲過程的步驟。最後在存儲過程的使用中可能是程序直接調用,也可能被觸發器調用。

熱點內容
安卓如何鑒別手機真假 發布:2025-02-05 14:28:15 瀏覽:119
ffmpeglinux編譯 發布:2025-02-05 14:28:04 瀏覽:544
伺服器如何做界面 發布:2025-02-05 14:27:23 瀏覽:290
訪問學者單位推薦意見 發布:2025-02-05 14:13:05 瀏覽:853
微信密碼鎖忘了怎麼辦 發布:2025-02-05 14:11:07 瀏覽:311
web是什麼文件夾 發布:2025-02-05 14:11:05 瀏覽:235
對信訪問題調查 發布:2025-02-05 14:09:39 瀏覽:984
singlephp 發布:2025-02-05 14:09:24 瀏覽:774
資料庫的欄位命名規則 發布:2025-02-05 13:53:16 瀏覽:684
固定ip自建伺服器訪問 發布:2025-02-05 13:53:03 瀏覽:741