oracle資料庫基礎教程之32包(子程式過載)

2021-12-30 06:14:43 字數 2863 閱讀 3984

oracle資料庫基礎教程之32包(子程式過載)

直接上**吧

--根據員工號或員工姓名獲取員工的資訊

--根據員工號或員工姓名刪除員工的資訊

--建立包規範

create or replace package overload_pkg

is function get_info(eno number) return emp%rowtype;

function get_info(name varchar2) return emp%rowtype;

procedure del_emp(eno number);

procedure del_emp(name varchar2);

end;--建立包體

create or replace package body overload_pkg

is function get_info(eno number) return emp%rowtype

isemp_record emp%rowtype;

begin

select * into emp_record from emp where empno = eno;

return emp_record;

exception

when no_data_found then

raise_application_error(-20020,'不存在此員工!');

end;

function get_info(name varchar2) return emp%rowtype

is emp_record emp%rowtype;

begin

select * into emp_record from emp where ename = name;

return emp_record;

exception

when no_data_found then

raise_application_error(-20020,'不存在此員工!');

end;

procedure del_emp(eno number)

isbegin

delete from emp where empno = eno;

if sql%notfound then

raise_application_error(-20020,'不存在此員工');

end if;

end;

procedure del_emp(name varchar2)

isbegin

delete from emp where ename = name;

if sql%notfound then

raise_application_error(-20020,'不存在此員工');

end if;

end;

end;呼叫:

--呼叫

--根據員工號查詢員工資訊

declare

emp_record emp%rowtype;

e_no_emp exception;

pragma exception_init(e_no_emp,-20020);

begin

emp_record:= overload_pkg.get_info(&no);

dbms_output.put_line('員工號:'||emp_record.empno||'姓名:'||emp_record.ename||'工資:'||emp_record.sal);

exception

when e_no_emp then

dbms_output.put_line(sqlerrm);

end;

--根據員工姓名查詢員工資訊

declare

emp_record emp%rowtype;

e_no_emp exception;

pragma exception_init(e_no_emp,-20020);

begin

emp_record:= overload_pkg.get_info('&name');

dbms_output.put_line('員工號:'||emp_record.empno||'姓名:'||emp_record.ename||'工資:'||emp_record.sal);

exception

when e_no_emp then

dbms_output.put_line(sqlerrm);

end;

--根據員工號刪除員工資訊

declare

e_no_emp exception;

pragma exception_init(e_no_emp, -20020);

begin

overload_pkg.del_emp(&no);

commit;

exception

when e_no_emp then

dbms_output.put_line(sqlerrm);

rollback;

end;

--根據員工的姓名刪除員工的資訊

declare

e_no_emp exception;

pragma exception_init(e_no_emp, -20020);

begin

overload_pkg.del_emp('&name');

commit;

exception

when e_no_emp then

dbms_output.put_line(sqlerrm);

rollback;

end;

C 基礎教程之資料結構

c c 陣列允許定義可儲存相同型別資料項的變數,但是結構是 c 中另一種使用者自定義的可用的資料型別,它允許您儲存不同型別的資料項。結構用於表示一條記錄,假設您想要跟蹤圖書館中書本的動態,您可能需要跟蹤每本書的下列屬性 title 標題 author 作者 subject 類目 book id 書的...

QWT基礎教程之legends

效果預覽 工程目錄樹如下 headers mainwindow.h panel.h plot.h settings.h sources main.cpp mainwindow.cpp panel.cpp plot.cpp 這裡一共有4個.件,4個.c檔案,涉及到4個主要類 mainwindow pa...

C 基礎教程之引用

c 引用 引用變數是乙個別名,也就是說,它是某個已存在變數的另乙個名字。一旦把引用初始化為某個變數,就可以使用該引用名稱或變數名稱來指向變數。c 引用 vs 指標 引用很容易與指標混淆,它們之間有三個主要的不同 不存在空引用。引用必須連線到一塊合法的記憶體。一旦引用被初始化為乙個物件,就不能被指向到...