oracle儲存過程

2021-07-29 19:21:44 字數 2558 閱讀 5075

儲存過程是命名程式塊,其實質是通過一系列的sql語句,根據傳入的引數,可以完成比單個sql語句更複雜的功能。舉個例子:想要向一張表中插入大量資料(5萬),就可以通過寫乙個儲存過程直接呼叫,方便很多,而且儲存過程可儲存。

比如建立個測試表

1

2

3

4

5

6

7

8

createtabletest

(idint,

namevarchar2(10),

countsint);

insertintotestvalues(1,'張三',100);

insertintotestvalues(2,'李四',200);

commit;

現在給你出個題目是

查詢所有人加在一起的counts是多少

建立儲存過程

1

2

3

4

5

6

7

createorreplacep_test--建立儲存過程,

as

v_countsint;--定義變數

begin--開始

selectsum(counts)intov_countsfromtest;--將得到的結果放到變數裡

dbms_output.put_line(v_counts);--將結果列印輸出

end;--結束

執行這種不帶輸入引數的

1

2

3

begin

p_test;

end;

然後你檢查下結果

再給你建立乙個帶輸入引數的

題目是,查詢id為1的人名是什麼

1

2

3

4

5

6

7

8

createorreplacep_test1

(v_idint)

as

v_name varchar2(10);

begin

selectnameintov_namefromtestwhereid=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...