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 指標 引用很容易與指標混淆,它們之間有三個主要的不同 不存在空引用。引用必須連線到一塊合法的記憶體。一旦引用被初始化為乙個物件,就不能被指向到...