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

oracle存儲過程的寫法

發布時間: 2022-04-12 02:32:47

1. 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體的結束。

2. 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;

3. oracle存儲過程怎麼寫

createorreplaceprocerep_dateas
v_datevarchar2(30);
cursorcuris
selectt.t_date
from(selectto_char(欄位名,'yyyy-mm-ddhh24:mi:ss')t_date,
row_number()over(orderby欄位名desc)rn
from表名)t
wherern<=5;
begin
opencur;
loop
fetchcur
intov_date;
exitwhencur%notfound;
dbms_output.put_line(v_date);
endloop;
end;

表名和欄位名自己替換下

4. oracle怎麼寫存儲過程

你首先要了解存儲過程包括哪些模塊,哪些是必備的,哪些是可選的.
另外呢,如果有條件的話,最好能找一些模板看看別人是怎麼寫的,再結合你們公司的實際情況,做一些適當的調整.
例如create or replace procere +過程名字(變數名 in,數據類型,變數名 out 數據類型)等
declare
變數 類型
begin
過程體
exception
end

最好有些實例,可以先模仿著寫一寫
等熟練之後呢,再自己按照自己的思路去寫

5. 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單步調試 藍屏

6. 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單步調試

7. 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;

8. 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。

9. oracle存儲過程怎麼寫循環

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

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

10. oracle的存儲過程的調用和寫法

存儲過程的執行方法如下
/*****************************************************************
oracle pl/sql中新建一個"測試"窗口,鍵入以下值測試oracle存儲過程。
dbms.output.put_line(param)為列印消息,類似jsp的out.println(),
用於在過程中查看錯誤地方,可以在過稱中添加。
*****************************************************************/
declare
param varchar2(10);
begin
param :='week';--這是你的輸入參數
proc_rpt_result(param);
dbms_output.put_line(param);--這是過程處理列印結果
end;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
這是我前段時間自己查資料總結的,都是初學者 希望對你有用

cursor是游標類型,前面某個查詢的值有多個返回 如
select xx from xxx 有多個返回值xx存入游標cursor,下面的open打開游標,對每一個游標的值按順序進行操作,你可以把游標看成是一個數組,select存入,open取出,你這個包我看不懂。

熱點內容
雲伺服器購買人怎麼查 發布:2024-11-20 17:09:36 瀏覽:399
目前安卓手機用什麼軟體 發布:2024-11-20 17:08:56 瀏覽:908
12個符號組成密碼多少個 發布:2024-11-20 17:08:56 瀏覽:296
災難資料庫 發布:2024-11-20 17:08:55 瀏覽:210
釣魚發燒友腳本機價格 發布:2024-11-20 16:59:41 瀏覽:122
什麼是網頁伺服器 發布:2024-11-20 16:59:38 瀏覽:63
訪問黎姿 發布:2024-11-20 16:50:57 瀏覽:877
砸迷你電風扇解壓視頻 發布:2024-11-20 16:44:40 瀏覽:620
個稅最新演算法 發布:2024-11-20 16:42:14 瀏覽:806
巔峰坦克游戲密碼是什麼 發布:2024-11-20 16:40:38 瀏覽:606