大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 淺談PL/SQL語法

淺談PL/SQL語法

更新時(shí)間:2021-03-12 17:31:57 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1158次

PL/SQL是Oracle數(shù)據(jù)庫對SQL語句的擴(kuò)展。在普通SQL語句的使用上增加了編程語言的特點(diǎn),通過邏輯判斷、循環(huán)等操作實(shí)現(xiàn)復(fù)雜的功能或者計(jì)算。MySQL 不支持 PL/SQL ,但支持Navicat Premium。那么接下來帶大家領(lǐng)略一下PL/SQL語法微妙之處。

1、聲明方法

declare

i number(2) := 10; -- 定義變量2位長度的數(shù)字類型i,賦值為10。 := 為賦值運(yùn)算符

s varchar2(10) := '小明 '; -- 定義變量字符變量s

ena emp.ename%type; -- 定義類型與emp表ename字段同類型的ena變量

emprow emp%rowtype; -- 記錄型變量begin

dbms_output.put_line(i); -- 輸出變量i

dbms_output.put_line(s || '上午好'); -- '小明上午好',||是連接符end;

2、if判斷

declare

i number(3) := ∈ -- &in 是執(zhí)行代碼后輸入的值begin

if i<18 then

dbms_output.put_line('少年');

elsif i<40 then

dbms_output.put_line('中年')

else

dbms_output.put_line('老年')

end if;end;-- elsif ... then 與 else 不是必需的

3、loop循環(huán)

-- 如同最常見的while語句

declare

i number(2) := 1;begin

while i<10 loop -- 開始循環(huán)

dbms_output.put_line(i);

i := i+1;

end loop; -- 結(jié)束循環(huán)end;

-- 等于while(true)語句中加條件declare

i number(2) := 1;begin

loop

exit when i>10;

dbms_output.put_line(i);

i := i+1;

end loop;end;

-- 如同for in循環(huán)declarebegin

for i in 1..10 loop -- 遍歷1-10

dbms_output.put_line(i);

end loop;end;?

4、游標(biāo)

declare

cursor c1 is selset * from emp; -- 定義一個(gè)游標(biāo)并將emp標(biāo)所有數(shù)據(jù)存入其中

emprow emp%rowtype; -- 定義記錄型變量(與emp一行記錄相同類型)emprowbegin

open c1; -- 打開游標(biāo)

loop

fetch c1 into emprow; -- 等于 for i in obj, i是emprow,c1是obj

exit when c1%notfound; -- c1取不到值的時(shí)候退出

dbms_output.put_line(emprow.ename); -- 輸出每行的ename屬性值

end loop;

close c1; -- 關(guān)閉游標(biāo)end;

5、存儲(chǔ)過程

已近提前編譯好的一段PL/SQL,可以直接調(diào)用。類似于函數(shù)。

-- 語法create procedure 過程名(參數(shù) 數(shù)據(jù)類型)is  -- 也可以使用as,等效begin

用PL/SQL 做的事end;

-- 給指定員工漲100create or replace procedure payrise(eno emp.empno%type) -- or replace 如果存在payrise,會(huì)修改它isbegin

update emp set sal=sal+100 where empno = eno;

commit;end;-- p1(7788) 調(diào)用存儲(chǔ)過程,傳入 7788 參數(shù)

6、存儲(chǔ)函數(shù)

-- 語法create function 函數(shù)名(參數(shù)名 類型,參數(shù)名 類型,...) return 數(shù)據(jù)類型isbegin

return(結(jié)果變量);end 函數(shù)名;

-- 通過存儲(chǔ)函數(shù)實(shí)現(xiàn)指定員工的年薪create or replace function salaycalc(eno emp.empno%type) return number()is

s number(10)begin

select sal*12+nvl(comm,0) from emp where empno = eno;

return send;-- s := salaycalc(7788) 調(diào)用時(shí)必須有變量接收它的值

存儲(chǔ)過程與存儲(chǔ)函數(shù)的區(qū)別:

1)關(guān)鍵字不同

2)存儲(chǔ)函數(shù)比存儲(chǔ)過程多兩個(gè)return

3)存儲(chǔ)函數(shù)天生有返回值存儲(chǔ)過程天生沒有

7、觸發(fā)器

指定一個(gè)規(guī)則,在做增刪改操作的時(shí)候,只要滿足這個(gè)規(guī)則就自動(dòng)觸發(fā)。觸發(fā)器分為:

語句級(jí)觸發(fā)器

不包含for each row ,反之是行級(jí)觸發(fā)器

行級(jí)觸發(fā)器

包含for each row 就是行級(jí)觸發(fā)器,使用它是為了使用 :old 或 :new 或 記錄

觸發(fā)語句與偽記錄的的關(guān)系

發(fā)器實(shí)現(xiàn)主鍵自增

create or replace trigger auid

beforeinserton ersonfor each rowdeclare

begin

select s_person.nextval into :new.pid from fual;end;

PL/SQL使用的數(shù)據(jù)庫操作語言還是基于SQL的,所以熟悉SQL是進(jìn)行PL/SQL編程的基礎(chǔ)。而且,PL/SQL語法和SQL語法也有很多共通之處,在本站的PL/SQL教程中,有各個(gè)PL/SQL語法的應(yīng)用實(shí)例,我們再結(jié)合SQL的語法學(xué)習(xí)起來也會(huì)事半功倍。

提交申請后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 黄色在线观看免费 | 欧美色精品 | 免费观看欧美一级毛片 | 欧美在线观看高清一二三区 | 久久香蕉国产精品一区二区三 | 四虎国产精品视频免费看 | 国产视频在线播放 | 天天躁日日躁狠狠躁黑人躁 | 日韩在线视频网址 | 99re这里只有精品99 | 免费日本黄色网址 | 亚洲操综合 | 九九热在线视频 | 99久久综合九九亚洲 | 中文字幕视频一区二区 | 目韩一区二区三区系列片丶 | 日一级片 | 999无色码中文字幕 999小视频 | 国产激情一区二区三区成人91 | 久久久久四虎国产精品 | 免费观看欧美一级毛片 | 久久这里有精品视频任我鲁 | 狠狠色噜狠狠狠狠 | 亚洲色欧美 | 一区二区三区免费在线 | 欧美高清视频www夜色资源 | 伊人久久大香线蕉综合bd高清 | 中文字幕影院 | 欧美激情在线观看一区二区三区 | 国产欧美日本在线观看 | 91成年人免费视频 | 亚洲免费在线看 | 真实国产精品视频国产网 | 日本α级毛片视频免费观看 | 成人午夜亚洲影视在线观看 | 中文字幕在线不卡精品视频99 | 国产在线美女 | 亚洲黄色自拍 | 99精品国产高清自在线看超 | jizz成熟丰满老女人 | 亚洲狠狠婷婷综合久久久久 |