PL-SQL

维基百科,自由的百科全书
跳转至: 导航搜索

PL/SQL(Procedural Language/SQL)是甲骨文公司專有的SQL擴展語言,應用在甲骨文公司Oracle数据库系統。一些的SQL数据库管理系統也提供了類似的擴展SQL語言。PL/SQL的的語法非常類似於Ada,而且像1980年代的Ada編譯器一樣,PL/SQL的運作系統使用Diana作為中介語言

重要的是PL/SQL緊密的結合在Oracle数据库裡面。

PL/SQL是Oracle數據庫使用的三種語言的其中之一,另外兩個是SQLJava

歷史[编辑]

功能[编辑]

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;

類似的語言[编辑]

功能近似PL/SQL的程序語言和其他關係型資料庫

Sybase ASEMicrosoft SQL ServerTransact-SQLPostgreSQL資料庫的PL/pgSQL(模仿PL/SQL)和IBM DB2SQL PL[1],都符合ISO SQLSQL/PSM標準。

參考[编辑]

外部連結[编辑]

数据库管理系统(DBMS) (查看 · 讨论 · 编辑)

概念
数据库 · 数据模型 · 数据库存储结构英语Database storage structures · 关系 (数据库) · 关系模型 · 分布式数据库 · ACID ( 原子性英语Atomicity (database systems) · 一致性 · 隔離性 · 持久性英语Durability (database systems) ) · Null值
关系数据库 · 关系模型 · 数据库规范化 · 數據庫完整性 · 實體完整性 · 參照完整性英语Referential integrity · 关系数据库管理系统 
主键 · 外键 · 代理键 · 超键 · 候选键 

数据库组件
触发器 · 视图 · 数据库表 · 指标 (数据库) · 事务日志英语Transaction log · 数据库事务 · 并发控制 · 乐观锁 · 悲观锁 · 数据库索引 
存储程序 · 資料庫分割

SQL
分类: 数据查询语言 (DQL) - 資料定義語言 (DDL) - 資料操縱語言 (DML) - 資料控制語言 (DCL)
指令:SELECT · INSERT · UPDATE · MERGE · DELETE · JOIN · UNION · CREATE · DROP · Begin work · COMMIT · ROLLBACK · TRUNCATE · ALTER
安全: SQL資料隱碼攻擊 · 參數化查詢

数据库管理系统的实现

实现类型
关系数据库 · 檔案型資料庫 · Deductive · 維度化資料庫 · 階層式 · 圖形資料庫 · 对象数据库 · 物件關聯式資料庫 · Temporal · XML資料庫

数据库产品
对象型 (对比) · 关系型 (对比)

数据库组件
数据查询语言 · 查詢最佳化器 · 查詢計畫 · 嵌入式SQL · ODBC · JDBC · OLE DB