儲存過程是命名程式塊,其實質是通過一系列的sql語句,根據傳入的引數,可以完成比單個sql語句更複雜的功能。舉個例子:想要向一張表中插入大量資料(5萬),就可以通過寫乙個儲存過程直接呼叫,方便很多,而且儲存過程可儲存。
比如建立個測試表
1
2
3
4
5
6
7
8
create
table
test
(id
int
,
name
varchar2(10),
counts
int
);
insert
into
test
values
(1,
'張三'
,100);
insert
into
test
values
(2,
'李四'
,200);
commit
;
現在給你出個題目是
查詢所有人加在一起的counts是多少
建立儲存過程
1
2
3
4
5
6
7
create
or
replace
p_test
--建立儲存過程,
as
v_counts
int
;
--定義變數
begin
--開始
select
sum
(counts)
into
v_counts
from
test;
--將得到的結果放到變數裡
dbms_output.put_line(v_counts);
--將結果列印輸出
end
;
--結束
執行這種不帶輸入引數的
1
2
3
begin
p_test;
end
;
然後你檢查下結果
再給你建立乙個帶輸入引數的
題目是,查詢id為1的人名是什麼
1
2
3
4
5
6
7
8
create
or
replace
p_test1
(v_id
int
)
as
v_name varchar2(10);
begin
select
name
into
v_name
from
test
where
id=v_id;
dbms_output.put_line(v_name);
end
;
執行時這樣
1
2
3
begin
p_test1(1);
end
;
第2個我沒給你寫注釋,你看你自己應該能理解吧
補充一下,儲存過程不一定只是執行查詢,也可以做刪除或者修改等sql語句,總體來說就是幾個或n個sql語句的集合,來完成系統內某些特定的需求,這些需求可以是乙個sql搞定的,也可以是多個sql組合的
Oracle儲存過程呼叫儲存過程
oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...
ORACLE儲存過程
自定義函式開始 create or replace function fn wftemplateidget templatecategoryid number,organid number,templatemode number return number istemplateid number i...
Oracle 儲存過程
create or replace procedure p 有就替換,沒有就建立 iscursor c is select from emp for update begin for v emp in c loop if v emp.deptno 10 then update emp2 set sa...