一、PL/SQL表達(dá)式與運(yùn)算符
- 算數(shù)運(yùn)算符
| 運(yùn)算符 | 含義 |
|---|---|
| + | 加 |
| - | 減 |
| * | 乘 |
| / | 除 |
| ** | 乘方 |
- 邏輯運(yùn)算符
| 運(yùn)算符 | 含義 |
|---|---|
| AND | 兩者同時(shí)為真,結(jié)果才為真 |
| OR | 有一個(gè)為真,結(jié)果就為真 |
| NOT | 取反 |
- 比較運(yùn)算符
| 運(yùn)算符 | 含義 |
|---|---|
| IS NULL | 如果測試值為NULL,則返回值為true,否則為false |
| LIKE | 比較字符串,結(jié)合 % 進(jìn)行模糊查詢 |
| BETWEEN | 測試值是否在指定的范圍內(nèi) |
| IN | 測試值是否在一系列的值中 |
- 關(guān)系運(yùn)算符
| 運(yùn)算符 | 含義 |
|---|---|
| = | 等于 |
| != <> ~= | 不等于 |
| < 、 <= | 小于 小于等于 |
| > 、 >= | 大于 大于等于 |
- 連接運(yùn)算符
| 運(yùn)算符 | 含義 |
|---|---|
| 11 | 用于連接兩個(gè)字符串 |
二、控制結(jié)構(gòu)
順序結(jié)構(gòu)
-
條件結(jié)構(gòu)
- if
if 條件1 then 執(zhí)行語句1; 執(zhí)行語句2; end if;- if else
if 條件1 then 執(zhí)行語句1; 執(zhí)行語句2; else if =條件2 then 執(zhí)行語句3; else 執(zhí)行語句4; end if; CASE 結(jié)構(gòu)
當(dāng)分支比較多時(shí),使用case分支比較方便
```sql
case [表達(dá)式]
when 條件1 then 結(jié)果1;
when 條件2 then 結(jié)果2;
...
else 結(jié)果;
end;
```
-
循環(huán)結(jié)構(gòu)
- loop
如果不控制,oracle會一直執(zhí)行l(wèi)oop之間的語句,陷入死循環(huán)
loop 執(zhí)行循環(huán)語句; end loop;- for
for counter in 1..10 loop --測試一下,輸出counter dbms_output.put_line(counter); end loop; ``` * when ```sql when i <= 10 loop dbms_output.put_line(i); i := i + 1; end loop; -
exit 循環(huán)退出
- 無條件退出
執(zhí)行到exit就直接退出循環(huán),繼續(xù)執(zhí)行
loop 執(zhí)行語句; exit; end loop;- 有條件退出
判斷條件是否為true,當(dāng)條件為true時(shí),退出循環(huán),繼續(xù)執(zhí)行。為false時(shí),將繼續(xù)執(zhí)行循環(huán)語句
loop 執(zhí)行語句; exit when 條件1; end loop; -
continue 繼續(xù)循環(huán)
- 無條件繼續(xù)
當(dāng)碰到continue時(shí),無條件的終止本次循環(huán),開始下一次的循環(huán)
loop 執(zhí)行語句1; continue; 執(zhí)行語句2; end loop;- 有條件繼續(xù)
當(dāng)碰到continue時(shí),判斷條件是否為true,如果為true時(shí),將終止本次循環(huán),開始下一次的循環(huán),如果為false,將繼續(xù)本次循環(huán)
loop 執(zhí)行語句1; continue when 條件; 執(zhí)行語句2; end loop; -
goto語句
declare m varchar2(20); begin m := 'AndyThink'; <<lable1\>\> dbms_output.put_line(m); goto lable1; end;