1. 程式人生 > >oracle pl/sql的基本使用和語法

oracle pl/sql的基本使用和語法

– PLSQL

– PL/SQL 也是一種程式語言,叫做過程化SQL語言(Procedural Language/SQL)。
– PL/SQL 是 Oracle 資料庫對 SQL 語句的擴充套件。
– 在普通 SQL 語句的使用上增加了程式語言的特點,
– 所以 PL/SQL 把資料操作和查詢語句組織在 PL/SQL 程式碼的過程性單元中,
– 通過邏輯判斷、迴圈等操作實現複雜的功能或者計算。
– PL/SQL 只有 Oracle 資料庫有。
– MySQL 目前不支援 PL/SQL 的,但支援 Navicat Premium。

– 實際開發中,我們一般都是通過 Java 程式碼來處理資料
– 將處理好的結果,再交給 SQL 去執行即可。

– 語法格式
declare – 宣告部分
– 定義變數
begin – 開始
– 主要內容
exception – 處理異常
end; – 結束

– 列印語句
begin
– 包.方法(儲存過程)
dbms_output.put_line(‘Jss 打遊戲打不過人家…’);
end;

– 定義變數
declare
vid int;
vname varchar(20) := ‘Jss’;
begin
dbms_output.put_line(vname || ‘打遊戲打不過人家…’);
end;

– 複雜型別
declare
vid int;
vname varchar(20);
type car is record (
id int,
name varchar(20),
price number
);

– 如果要使用複雜型別資料,需要賦值給一個變數才行
vcar car;
begin
vname := ‘Jss’;
vcar.name := ‘BMW x6’;

dbms_output.put_line(vname || ‘就算有’ || vcar.name || ‘但打遊戲還是打不過人家…’);
end;

– 使用 PL/SQL

– 給表插入資料
select * from tb_stuu;

declare
vid int := 4;
vname varchar(20) := ‘花花’;
begin
insert into tb_stuu(id, name) values (vid, vname);
end;

– 查詢資料
declare
vid int := 4;
vname varchar(20);
begin
select name into vname from tb_stuu where id = vid;
dbms_output.put_line(vname);
end;

– if
declare
i number := 10;
begin
if(i = 10) then
dbms_output.put_line(‘Jss..’);
end if;
end;

– if else
declare
i number := 20;
begin
if(i = 10) then
dbms_output.put_line(‘Jss..’);
else
dbms_output.put_line(‘cuihua..’);
end if;
end;

– if…else if

declare
i number := 20;
begin
if(i = 10) then
dbms_output.put_line(‘Jss..’);
elsif(i = 20) then
dbms_output.put_line(‘cuihua..’);
else
dbms_output.put_line(‘chunhua..’);
end if;
end;

– loop 迴圈
declare
i number := 0;
begin
loop
i := i + 1;
dbms_output.put_line(‘cuihua..’);
– 當滿足 i = 5 的時候,結束迴圈
exit when i = 5;
end loop;
end;

– for
begin
dbms_output.put_line(‘迴圈前…’);
– for 主要是用來指定條件
for i in 1..5
loop
dbms_output.put_line(‘cuihua..’);
end loop;
dbms_output.put_line(‘迴圈後…’);
end;

– while
declare
i number := 0;
begin
dbms_output.put_line(‘迴圈前…’);
– for 主要是用來指定條件
while i < 6
loop
dbms_output.put_line(‘cuihua..’);
i := i + 1;
end loop;
dbms_output.put_line(‘迴圈後…’);
end;