PL/SQL學習。缺點(移植性不好,如果換了數據庫則存儲過程不能用了)。
創建存儲過程。create or replace procedure szy_pro1(過程名) is
begin
--執行的操作,sql語句。
end;
調用存儲過程有兩種形式,1.exec 過程名(參數1,參數2 ....) 2.call 過程名(參數1,參數2 .....)
PL/SQL部分相當於是塊的編程,塊有三部分構成:定義部分declare ,執行部分 begin ,例外處理部分 exception ;
例如 declare v_ename varchar2(5)
begin
select ename into v_ename from emp where empno=&no;
dbms_output.put line('僱員名字是'||v_ename);
end;
帶異常處理的
declare v_ename varchar2(5)
begin
select ename into v_ename from emp where empno=&no;
exception when no_data_found then
dbms_output.put line('沒有數據');
end;
存儲過程的 創建
(1)可以輸入僱員名稱,新工資,可修改僱員名稱
create procedure szy_pro1(spName varchar2,newSal number) is
begin
--執行部分
update emp set sal=newSal where ename=spName;
end;
函數,是返回特定數據。函數裏面必有return語句。
(2)該函數返回固定員工的工資
create function 函數名(name varchar2) return number is mysal number(7,2);
begin
select sal into mysal from emp where ename =name;
end;
然後便是這個函數的調用,
var a number;
call 函數名('SCOTT') into:a;
包,包用於在邏輯上組合過程和函數,他由包規範和包體兩部分組成
包的創建
create or replace package szy_package is
procedure update_sal(name varchar2,newsal number);
function annual_income(name varchar2) return number;
end;
包只有含函數和過程的說明,但沒有實現。包體便是實現包裏的函數和過程。
建立包體 create package body szy_package is
procedure update_sal(參數) is
begin
end;
annual_income(參數) is
begin
end;
如何調用包體的過程或則函數,則 包名.函數名/過程名
call szy_package.update_sal(參數...);