PL-SQL
此條目需要擴充。 (2011年10月12日) |
![]() | 此條目需要精通或熟悉相关主题的编者参与及协助编辑。 (2011年10月12日) |
PL/SQL(Procedural Language/SQL)是甲骨文公司專有的SQL擴展語言,應用在甲骨文公司的Oracle数据库系統。一些的SQL数据库管理系統也提供了類似的擴展SQL語言。 PL/SQL的的語法非常類似於Ada,而且像1980年代的Ada編譯器一樣,PL/SQL的運作系統使用Diana作為中介語言。
重要的是PL/SQL緊密的結合在Oracle数据库裡面。
PL/SQL是Oracle數據庫使用的三種語言的其中之一,另外兩個是SQL和Java。
歷史
功能
POWERFUL EXELLENCE GREAT
基本程式
条件语句
以下的代码展示了IF-THEN-ELSIF结构。ELSIF和ELSE部分是可选的,从而可以创建更简单的IF-THEN或者IF-THEN-ELSE结构。
IF x = 1 THEN
sequence_of_statements_1;
ELSIF x = 2 THEN
sequence_of_statements_2;
ELSIF x = 3 THEN
sequence_of_statements_3;
ELSIF x = 4 THEN
sequence_of_statements_4;
ELSIF x = 5 THEN
sequence_of_statements_5;
ELSE
sequence_of_statements_N;
END IF;
CASE语句简化了一些大的IF-THEN-ELSE结构。
CASE
WHEN x = 1 THEN sequence_of_statements_1;
WHEN x = 2 THEN sequence_of_statements_2;
WHEN x = 3 THEN sequence_of_statements_3;
WHEN x = 4 THEN sequence_of_statements_4;
WHEN x = 5 THEN sequence_of_statements_5;
ELSE sequence_of_statements_N;
END CASE;
CASE语句可以使用预定义的选择符:
CASE x
WHEN 1 THEN sequence_of_statements_1;
WHEN 2 THEN sequence_of_statements_2;
WHEN 3 THEN sequence_of_statements_3;
WHEN 4 THEN sequence_of_statements_4;
WHEN 5 THEN sequence_of_statements_5;
ELSE sequence_of_statements_N;
END CASE;
陣列
迴圈
比较常用的有三种形式。 (1) For ... Loop
... End Loop;
(2)
Loop ... End Loop;
(3) while...loop;
loop循环是最简单的循环语句。 loop end loop; 该语法用于无限制的循环执行语句,在实际中没有任何意思。如果退出循环,则必须使用exit语句终止循环。 exit语句分两种格式: exit:该格式的语句用于无条件强迫终止循环。 exit...when:该格式用于有条件终止循环,首先检测when的条件是否满足。 loop if...then exit; end if; end loop; loop exit when ; end loop; while...loop循环在执行语句时,首先检测条件的值。例如: declare
div_name varchar2(20); div_num integer:=1;
begin
while div_num<10 loop select name into div_name from div_tab where div_author ='A000'||to_char(div_num);
div_num:=div_num+1; end loop; end; for...loop循环可以限定循环的次数 例如: declare
div_name varchar2(20); div_num integer:=1;
begin
for div_num in 1..9 loop select name into div_name from div_tab where div_author='A000'||to_char(div_num);
end loop; end;
declare div_name varchar2(20); div_num integer:=1; begin for div_num in 1..9 loop EXIT WHEN div_num >7; DBMS_OUTPUT.put_line(div_num); end loop; end;
類似的語言
Sybase ASE、Microsoft SQL Server的Transact-SQL,PostgreSQL資料庫的PL/pgSQL(模仿PL/SQL)和IBM DB2的SQL PL[1],都符合ISO SQL的SQL/PSM標準。