oracle學習筆記 第七章 匿名塊

2021-08-24 19:27:55 字數 4042 閱讀 1912

建立語法格式:

declare

-- 申明變數;

begin

-- 語句塊;

end ;

常用語句:

1,if 語句:

if exp then

…elsif

… else

…end if ;

2,loop end loop語句:

loop

…exit when exp; (或用exit無條件退出,必須有退出條件,否則死迴圈)

end loop;

3,for loop 語句:

for v_var in 範圍 loop – 這裡的 v_var 變數無須定義

…end loop;

4,while exp loop 語句:

while exp loop

…end loop;

使用標籤 <> 和 goto 語句,可以實現語句的跳轉

例子:declare

v_no empm.emp_no%type;

v_nm empm.emp_nm%type;

v_age empm.age%type;

v_count int;

begin

select count(*) into v_count from empm ;

for i in 1..v_count loop

dbms_output.put_line('no-----name------age');

select emp_no,emp_nm,age into v_no,v_nm,v_age from empm where emp_no = lpad(to_char(i),3,'0');

dbms_output.put_line(v_no||'----'||v_nm||'------'||to_char(v_age));

end loop;

end ;

---goto 語句的使用

declare

v_emp_no empm.emp_no%type;

v_dept_no empd.dept_no%type;

v_count integer;

cursor cur is select emp_no from empm;

begin

open cur;

loop

<>

fetch cur into v_emp_no;

exit when cur%notfound;

select count(*) into v_count from empd where emp_no = v_emp_no;

if v_count = 0 then

dbms_output.put_line('v_emp_no'||v_emp_no);

goto lab_t;

else

select dept_no into v_dept_no from empd where emp_no=v_emp_no;

dbms_output.put_line('v_dept_no '||v_dept_no );

end if;

end loop;

end;

record 資料型別--很像結構

declare

type test_record is record

(vemp_no char(10),

vemp_name char(10)

);t1 test_record;

begin

t1.vemp_no:='70255';

t1.vemp_name:='aaa';

update empm set emp_nm=t1.vemp_name where emp_no=t1.vemp_no;

end;

table資料型別 --很像陣列 下標從0開始,tab.count table的大小,tab.extend(n) 擴充套件table的大小,tab.delete 刪除table的內容

declare

type test_table is table of varchar2(10) index by binary_integer;

tb test_table;

begin

tb(1):='aaaa';

tb(2):='bbbb';

tb(3):='cccc';

dbms_output.put_line('tb(1)='||tb(1)||',tab(2)='||tb(2)||',tb(3)='||tb(3));

end;

declare

type tab is table of number;

v_tab tab := tab(1,2,3,4,5);

begin

dbms_output.put_line(v_tab.count);-- table的大小

for i in 1..5 loop

dbms_output.put_line(v_tab(i));

end loop;

v_tab.delete;

dbms_output.put_line(v_tab.count);

v_tab.extend(2);--擴充套件 table 的容量,擴充套件 2 個

v_tab(6) := 6;

v_tab(7) := 7;

dbms_output.put_line(v_tab(6));

dbms_output.put_line(v_tab(7));

v_tab.delete;

dbms_output.put_line(v_tab.count);

v_tab.delete;-- 刪除table的內容

dbms_output.put_line(v_tab.count);

end;

record與table 結合使用:

declare

type test_record is record(

vemp_no varchar2(10),

vemp_name varchar2(10),

vemp_*** varchar2(2));

type test_table is table of test_record index by binary_integer;

tb test_table;

i integer:=0;

n integer:=0; --table座標從0開始

begin

for rec_1 in (select emp_no,emp_nm,*** from empm) loop

tb(i).vemp_no:=rec_1.emp_no; --注意此處的語法

tb(i).vemp_name:=rec_1.emp_name;

tb(i).vemp_***:=rec_1.emp_***;

i:=i+1;

end loop;

for j in 1..i loop

dbms_output.put_line('tb('||to_char(n)||')='||tb(j).vemp_no);

dbms_output.put_line('tb('||to_char(n)||')='||tb(j).vemp_name);

dbms_output.put_line('tb('||to_char(n)||')='||tb(j).vemp_***);

dbms_output.put_line('----------------------------');

n:=n+1;

end loop;

end;

-- subtype 給使用者定義的子型別命名

declare

subtype sub_empm is empm%rowtype;

v_empm sub_empm;

begin

select * into v_empm from empm where emp_no = '001';

dbms_output.put_line( v_empm.emp_nm);

end ;

第七章筆記

程序就是cpu未完成的工作 檢視程序的相關命令 ps a 關於當前環境的所有程序 x 與當前環境無關的所有程序 f 顯示程序從屬關係 e 顯示當前使用者環境中的所有程序 l 長列表顯示程序的詳細資訊 u 顯示程序的使用者資訊 ps ax o cpu,mem,user,group,comm,nice,...

K R學習筆記 第七章

這一章講i o。i o本來是與作業系統高度相關的內容,但是這一章,卻從標準庫的角度,介紹了如何使用i o。而把i o的一些具體實現細節留在了最後一章中。首先需要注意的是,標準庫中的許多 函式 都是巨集,比如getchar putchar tolower 等等。這樣做的目的是為了減小函式呼叫的開銷,想...

C primer plus 學習筆記(第七章)

第七章 函式 c 的程式設計模組 7.3.5 指標和const 前提 int grop 16 int chips 12 const int p snack gorp const會鎖定後面乙個符號,所以,此時 p snack chips allowed p snack 20 error前提 int g...