oracle ---- pl/sql
hadoop 基於java ,,spark 基於scala
--------------記錄型變數
declare
-- 定義記錄型變數:代表一行
emp_rec emp%rowtype;
begin
select * into emp_rec from emp where empno=7839;
dbms_output.put_line(emp_rec.ename||'的薪水是'||emp_rec.sal);
end;
-------------------- 引用型變數
declare
pename emp.ename%type;
psal emp.sal%type;
begin
select ename,sal into pename,psal from emp where empno=7839;
dbms_output.put_line(pename||'的薪水是'||psal);
end;
------------------------IF語句
if 條件 then 語句1
elsif 條件 then 語句2
else 語句3
endif ;
------------------------迴圈
declare
pnum number := 1;
begin
loop
--迴圈
--退出條件
exit when pnum > 10;
dbms_output.put_line(pnum);
--加一
pnum := pnum + 1;
end loop;
end;
-------------------------游標
declare
-- 定義游標
cursor cemp is select ename,sal from emp;
pename emp.ename%type;
psal emp.sal%type;
begin
-- 開啟游標
open cemp;
loop
------取當前記錄
fetch cemp into pename,psal;
-------exit when 沒有取到記錄;
exit when cemp%notfound;
dbms_output.put_line(pename||'的薪水是'||psal);
end loop;
--關閉游標
close cemp;
end;
------------------------帶引數的游標
declare
cursor cemp(dno number) is select ename from emp where deptno=dno;
pename emp.ename%type;
begin
open cemp(20);
loop
fetch cemp into pename;
---找不到退出
exit when cemp%notfound;
dbms_output.put_line(pename);
end loop;
close cemp;
end;
-------------------異常 系統例外
declare
pnum number;
begin
pnum := 1/0;
exception
when zero_divide then dbms_output.put_line('0不能做分母'); dbms_output.put_line('零不能做分母');
when value_error then dbms_output.put_line('算術或者轉換錯誤');
when others then dbms_output.put_line('其他例外');
end;
------------------------------異常 自定義例外demo
-- 查詢50號部門的員工姓名
declare
--定義游標:代表50號部門的員工
cursor cemp is select ename from emp where deptno=50;
pename emp.ename%type;
--自定義例外
no_emp_found exception;
begin
open cemp;
--取第一條記錄
fetch cemp into pename;
if cemp%notfound then
--丟擲例外
raise no_emp_found; --相當於java的throws
end if;
--pmon程序: process monitor
close cemp;
exception
when no_emp_found then dbms_output.put_line('沒有找到員工');
when others then dbms_output.put_line('其他例外');
end;