初學Oracle,瞭解了一下Oracle的存儲過程,運行了幾個例子,作個備忘,方便之後使用:
一、插入數據:
向一張表裏插入若干條數據ide
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/*
建立表tb1
包含兩個字段col一、col2
*/
create table tb1(
col1 char(20),
col2 char(20));
/*插入數據的存儲過程*/
CREATE OR REPLACE PROCEDURE INSERTAMOUNTTEST
(
ST_NUM IN NUMBER,/*起始數值*/
ED_NUM IN NUMBER/*結束數值*/
)
IS
BEGIN
declare
i number;
begin
/*循環插入*/
FOR i IN ST_NUM..ED_NUM LOOP
INSERT INTO tb1 values(i,'test');
END LOOP;
end;
commit;
/*異常處理*/
EXCEPTION
WHEN OTHERS THEN
rollback;
END;
/*在CommondLine下執行*/
exec INSERTAMOUNTTEST(1,2000);
|
二、更新數據spa
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
CREATE OR REPLACE PROCEDURE UPDATEAMOUNTTEST
(
WHERE_NUM IN VARCHAR2/*SQL語句條件值*/
)
IS
BEGIN
UPDATE tb1 SET col2='test2' where col1 like WHERE_NUM||'%';
/*異常處理*/
EXCEPTION
WHEN OTHERS THEN
rollback;
END;
/*在CommondLine下執行*/
exec UPDATEAMOUNTTEST('11');
|
三、存儲過程之間的調用
以一個查詢更新爲例子code
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/*
查詢更新存儲過程,調用更新存儲過程UPDATEAMOUNTTEST2
*/
CREATE OR REPLACE PROCEDURE SELECTUPDATETEST
(
tJStr IN CHAR
)
is
upStr CHAR(20);
begin
/*
查詢出要更新的字段值
*/
select a.col2 into upStr from tb1 a where a.col1 = tJStr;
/*
調用更新存儲過程
傳入用於更新的兩個參數
*/
UPDATEAMOUNTTEST2('11',upStr);
end SELECTUPDATETEST;
/*
更新用的存儲過程,被SELECTUPDATETEST調用
*/
CREATE OR REPLACE PROCEDURE UPDATEAMOUNTTEST2
(
WHERE_NUM IN VARCHAR2,/*更新條件*/
SET_NAME IN VARCHAR2/*更新後的字段值*/
)
IS
BEGIN
UPDATE tb1 SET col2=SET_NAME where col1 like WHERE_NUM||'%';
EXCEPTION
WHEN OTHERS THEN
rollback;
END;
|