Oracle第九課課後作業

2022-02-04 01:31:17 字數 4787 閱讀 2641

輸出100以內的質數

-- 定義3個變數

-- i:外迴圈,迴圈2到100的數

-- j:內迴圈,判斷從2到i-1是否能被整除

-- flag:是否是素數的標誌,執行完一次內迴圈,判斷flag的值,如果內迴圈中有被整除的,flag變為0,若沒有,flag值為1,輸出i

declare

-- local variables here

i integer;

j integer;

flag integer;

begin

-- test statements here

i:=2;

j:=2;

for i in 2..100 loop

flag:=1;

for j in 2..i-1 loop

if mod(i,j)=0 then

flag:=0;

exit;

end if;

end loop;

if flag=1 then

dbms_output.put_line(i);

end if;

end loop;

end;

建一張表,t_money(id,name,money),money是收入,1萬以內,分段顯示:0-1500屬於貧困,1501-3000是藍領,3001-8000是白領,8001-10000是精英

select case when end 來實現

create table t_money(id number(2),name varchar(8),money number(6));

create sequence s1 minvalue 0 start with 0;

insert into t_money values(s1.nextval,&n,&m);

select name,case

when money between 0 and 1500 then '貧困'

when money between 1501 and 3000 then '藍領'

when money between 3001 and 8000 then '白領'

when money between 8001 and 10000 then '精英'

endfrom t_money;

寫乙個程式,找出上述t_money表中有多少條記錄,並顯示工資最高的人的資訊,排序再過濾,結果儲存到變數

declare 

-- local variables here

i integer;

-- 行變數的定義

v_userrow t_money%rowtype;

begin

-- test statements here

select count(*) into i from t_money;

select id,name,money into v_userrow.id,v_userrow.name,v_userrow.money from

(select * from t_money order by money desc) where rownum=1;

dbms_output.put_line(i);

dbms_output.put_line('工資最高人的資訊:'||v_userrow.id||v_userrow.name||v_userrow.money);

end;

執行順序

例題當子查詢返回的結果集很少時,採用in比較好;

當子查詢返回的結果集很多時,採用exists比較好

區域:在test window進行程式設計

組成:變數定義

變數的賦值(用:=進行賦值)

-- 在定義變數時進行賦值,或者在使用前進行賦值

v_clazz number:=11;

v_college number(10) default 1;

-- 在查詢時進行賦值:將查詢到的最高工資賦值給i

select max(sal) into i from emp;

-- 行變數的賦值

select emp.empno,emp.ename into v_emprow.empno,v_emprow.ename from emp where rownum=1;

-- select只能查詢到一條記錄

輸出異常處理:exception

-- sqlcode:異常編號,sqlerrom:異常資訊

-- 捕獲異常

exception

when no_data_found then

dbms_output.put_line('沒有資料');

when too_many_rows then

dbms_output.put_line('返回太多行');

when others then -- 對未知異常的處理

dbms_output.put_line(sqlcode||'-'||sqlerrm);

選擇語句(在程式設計視窗執行):if elsif

-- 成績大於小於60為沒有通過,大於60通過

declare

-- local variables here

i integer;

begin

-- test statements here

i:=60;

if i<60 then

dbms_output.put_line('no pass');

else

dbms_output.put_line('pass');

end if;

end;

選擇語句(在sql視窗執行): case when

select score,case 

when score between 0 and 59 then '不及格'

when score between 60 and 80 then '普通'

when score between 80 and 90 then '良好'

when score between 90 and 100 then '優秀'

end

from t_score;

for迴圈

declare 

-- local variables here

v_score integer;-- 成績

i integer;

begin

-- test statements here

delete from t_score;-- 測試前先刪除表資料

for i in 1..10 loop -- 2. for迴圈

v_score:=abs(mod(dbms_random.random,100)); -- 1. 隨機數

insert into t_score(name,score) values('name'||seq1.nextval,v_score);

end loop;

commit;

dbms_output.put_line(i);

end;

while迴圈

-- 變數定義時為初始化為null,無法進行比較

declare

-- local variables here

i integer;

begin

if i is null then

dbms_output.put_line('i is not init');

i:=1;

else

if i<10 then

dbms_output.put_line('i<10');

else

dbms_output.put_line('i>=10');

-- test statements here

while i<10 loop

i:=i+1;

dbms_output.put_line(i);

end loop;

end;

loop end loop

declare 

-- local variables here

i integer;

begin

-- test statements here

/*for ... loop

end loop

while loop

end loop

*/loop

if i is null then

i:=0;

elsif i<10 then

i:=i+1;

else

exit; -- 退出迴圈

end if;

dbms_output.put_line(i);

end loop;

end;

​-- 示例2

declare

-- local variables here

i integer;

begin

-- test statements here

i:=0;

loop

i:=i+1;

exit when i>10;

dbms_output.put_line(i);

end loop;

end;

第九課 變數

任務與 修改 沒有定義變數r,在第四行float r1,r2之後加上r就可以 include include intmain 閱讀程式 閱讀下面的程式,在閱讀過程中,請為每乙個變數畫出乙個方框,代表對應的記憶體空間。隨著閱讀,標明變數的變化過程,達到讀懂程式的目的。include intmain 圖...

C語言第九課

主要內容 高階指標 結構體指標 一 結構體指標 指向結構體變數的指標叫做結構體指標 typedef struct student student student stu student p stu student 結構體型別的指標 型別 p 結構體指標變數 變數名 結構體訪問成員變數 示例 type...

第九課 VBO索引

到目前為止,我們在建立vbo時總是重複儲存三角形公共邊的頂點。本課將介紹索引。索引是通過索引緩衝 index buffer 來實現的頂點復用。索引緩衝儲存的是整數 每個三角形有三個整數索引,分別指向各種屬性緩衝 attribute buffer 頂點位置 顏色 uv座標 其他uv座標 法線緩衝法線等...