建立語法格式:
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...