sql 儲存過程 函式

2021-09-22 18:24:35 字數 1979 閱讀 1004

1、 建立儲存過程

1)語法

create [or replace] procedure procedure_name

[argument type]

《型別、變數的說明》

begin

《執行部分》

exception

《可選的異常錯誤處理程式》

end;

//##建立過程

sql> create or replace procedure delemp(v_empno in emp.empno%type) is

2 no_result exception;

3 begin

4 delete from emp where empno = v_empno;

5 if sql%notfound then

6 raise no_result;

7 end if;

8 dbms_output.put_line('employee number' || v_empno || 'was deleted!');

9 exception

10 when no_result then

11 dbms_output.put_line('no row found!');

12 when others then

13 dbms_output.put_line('other error!');

14 end delemp;

##執行儲存過程

exec delemp(999);

//2、 建立函式

1)語法

create [or replace] function function_name

[(argument type,

...argument type)]

return return_type

function_body

/2)示例

##建立函式

sql> create or replace function get_salary(dept_no number, v_num out number)

2 return number is

3 v_sum number;

4 begin

5 select sum(sal), count(*)

6 into v_sum, v_num

7 from emp

8 where deptno = dept_no;

9 return v_sum;

10 exception

11 when no_data_found then

12 dbms_output.put_line('你需要的資料不存在!');

13 when too_many_rows then

14 dbms_output.put_line('程式執行錯誤!請使用游標');

15 when others then

16 dbms_output.put_line('發生其他錯誤!');

17 end get_salary;

18 /

function created.

##呼叫函式(注:函式不能單獨呼叫,只能在語句中呼叫)

sql> declare

2 v_num number;

3 v_sum number;

4 begin

5 v_sum := get_salary(30,v_num);

6 dbms_output.put_line('30 department sum salary is '||v_sum||' employee: '||v_num);

7 end;

//

sql 儲存過程與函式區別

乍看之下,使用者自定義函式和儲存過程的功能似乎一摸一樣。但是,其實這兩者之間還有一些雖然細微但是很重要的差異 使用者自定義函式是有返回值的過程,返回值是要通過表變數來處理返回的過程。儲存過程 它們可以接受引數 輸出引數 返回單個或多個結果集以及返回值 1 可以在單個儲存過程中執行一系列 sql 語句...

SQL儲存過程呼叫標量值函式,儲存過程呼叫儲存過程

一 存 儲過程呼叫標量值函式 先建乙個標量值函式,如 create function dbo f num a nvarchar 50 returns nvarchar 50 asbegin declare m nvarchar 50 select m a aad return m end接下來 在儲...

SQL儲存過程

什麼是儲存過程呢?定義 將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。講到這裡,可能有人要問 這麼說儲存過程就是一堆sql語句而已啊?microsoft公司為什麼還要新增...