PL/SQL第一章--概述及變數型別

爪哇島的流浪漢發表於2018-08-03

--列印Hello World

declare(沒有說明部分的話可以不寫,程式以begin開始,以end;結束)

--說明部分(變數,游標或者例外)

begin

--程式體

dbms_output.put_line('Hello World');--(程式包)

end;

/ --退出編輯環境並且執行PL/SQL程式,前提是沒有語法錯誤

--開啟輸出開關

set serveroutput on 

/--退出...

Hello World

藉助圖形化工具編寫PLSQL程式 Oracle SQL Developer

--檢視程式包的結構

desc dbms_output;

PL/SQL 全稱 Produce Language/SQL 過程語言的SQL

PLSQL是Oracle對sql語言的過程化擴充套件(程式導向的語言) 

--指在SQL命令語言中增加了過程處理語句(分支,迴圈),是SQL語言具有過程處理的能力

傳統的update語言是命令式語言。

SQL語言               +                過程語言                     程式導向,簡單,高效,靈活,實用

資料操縱能力                          資料處理能力

不同資料庫的SQL擴充套件

Oracle:PL/SQL         DB2:SQL/PL         SQL Server:Transac-SQL(T-SQL)       MySQL:limit

PL/SQL的程式結構

declare 說明部分(變數說明,游標說明,例外說明)

begin 語句序列(DML語句)

exception 例外處理語句

end;

*定義基本變數 型別 char varchar2 number date boolean long  賦值形式:boolean :=true

一個較為完整的例子:

declare

pnumber number(7,2);

pname varchar2(20);

pdate date;

begin

pnumber:=1;

dbms_output.put_line(pnumber);

pname:='tom';

dbms_output.put_line(pname);

pdate:=sysdate;

dbms_output.put_line(pdate);

--計算明天的日期

dbms_output.put_line(pdate+1);

end;

/

引用型變數

舉例:my_name emp.ename%type; 引用emp表中的ename欄位的型別

需求:查詢員工號為1的員工姓名和薪水

declare

pename emp.ename%type;

psal emp.salary%type;

begin

--得到1的姓名,薪水,變數的順序和查詢語句順序對應

select ename,sal into pename,psal from emp where empno=1;

--列印姓名和薪水

dbms_output.put_line(pename||'的薪水是'||psal);

end;

/

記錄型變數

舉例:emp_rec emp%rowtype;

記錄型變數分量的引用

舉例:emp_rec.ename:=‘ADAMS’;

--使用記錄型變數完成同樣需求

set serveroutput on

declare

--定義記錄型變數:注意代表一行

emp.rec emp%rowtype;

begin

--得到1這一行的資訊

select *  into emp_rec from emp where empno=1;

--列印姓名和薪水

dbms_output.put_line(emp_rec.ename||'的薪水是'||emp_rec.sal);

end;

/

 

相關文章