1. 程式人生 > >基於oracle 的PL/SQL編程-1

基於oracle 的PL/SQL編程-1

才會 特殊 declare 安裝 ons AR select integer pre

  1. 本機安裝的oracle ,默認是開機啟動服務的,開機時間太慢,關閉了,需要打開的服務:

OracleDBConsoleorcl

OracleOraDb10g_home1iSQL*Plus

OracleOraDb10g_home1TNSListener

OracleServiceORCL 這個後面的ORCL就是數據庫名字,官方術語叫做數據庫sid

2.打開PL/SQL軟件,用戶名scott 登陸數據庫 ORCL 密碼 tiger

技術分享圖片

3.打開一個測試窗口,如下

技術分享圖片

 1 -- Created on 2018/6/3 by ADMINISTRATOR 
 2 declare
 3   -- 聲明本地變量的地方,包括遊標(結果集類型變量),如果沒有,declare可以去掉
4 --相當於java的 public class A{} 5 i integer; 6 begin 7 -- 執行部分 8 --相當於Java的public static void main(String[] args) 9 --異常處理 10 end;

4.打印helloworld

技術分享圖片

結果如下:

技術分享圖片

dbms_outputoracle的程序包,put_line()是調用的方法

在命令行中打印:需要先設置 set serveroutput on ,才會將打印語句打印出來,否則只執行不打印。

技術分享圖片 技術分享圖片

5. PLSQL變量的使用:

PLSQL中的變量分兩種:

(1)普通數據類型:

char varchar2 date number(整數和小數) boolean long

(2)特殊變量類型(引用變量、記錄型變量)

變量的聲明方式為:變量名 變量類型(變量長度) ,例如:v_name varchar2(20)

變量賦值:

  (1)聲明時使用 := 直接賦值:v_name varchar2(20) := ‘zhangsan’ 只寫=,則是進行比較

  (2)語句賦值: select into 變量名

5.1 普通變量的使用

 1 -- 聲明一個人的信息 姓名 薪水 地址  
 2 declare
 3   -- 姓名 不能使用name,這是保留字
 4
v_name varchar2(50) := 張三; 5 -- 薪水 小數:number(總長度(小數加整數的位數),小數位數) v_sal number(6,2) --1000.00 6 v_sal number; 7 --地址 8 v_addr varchar2(200); 9 begin 10 --直接賦值 11 v_sal := 15000; 12 --語句賦值 13 select 上海市南京路 into v_addr from dual; --實際工作中應該是from 某個表 14 -- 打印變量 || 是拼接符,相當於java 的+ 15 dbms_output.put_line(姓名: || v_name || ,薪水: || v_sal || ,地址: || v_addr); 16 end;

執行結果:

技術分享圖片

5.2 引用變量的使用

引用變量:變量的類型和長度取決於表中字段的類型和長度(變量的類型和長度引用表中字段的類型和長度),通過 表名.列名%TYPE 指定變量的類型和長度,例如 v_name emp.ename%TYPE

引用型變量的好處:使用普通變量定義方式,需要知道表中列的類型,而使用引用類型不需要考慮列的類型,使用%TYPE是非常號的編程風格,因為它使得PL/SQL更加靈活,更加適應於對數據庫定義的更新。

 1 -- 查詢emp表中7839號員工的個人信息,打印姓名和薪水
 2 declare
 3   -- 姓名 定義的是引用變量
 4   v_ename emp.ename%TYPE;
 5   -- 薪水  
 6   v_sal emp.sal%TYPE;
 7 
 8 begin
 9   --查詢姓名和薪水並賦值給變量,。使用select into 語句賦值
10   select ename, sal into v_ename, v_sal from emp where empno = 7839;
11   dbms_output.put_line(姓名: || v_ename || ,薪水: || v_sal);
12 
13 end;

結果:

技術分享圖片

5.3 記錄型變量

記錄型變量 默認接接收 表中的一行數據,不能指定字段,相當於java中的一個對象。

語法: 變量名稱 表名%ROWTYPE 例如 v_emp emp%rowtype; 通過 變量名.字段名 的方式獲取變量中的值

 1 --記錄型變量示例:用該變量接收表中一行sql的信息
 2 declare
 3   -- 記錄型變量
 4   v_emp emp%ROWTYPE;
 5 
 6 begin
 7   --查詢所有字段並賦值給變量,字段名用v_emp.字段名 表示
 8   select * into v_emp from emp where empno = 7839;
 9   dbms_output.put_line(姓名: || v_emp.ename || ,薪水: || v_emp.sal);
10 
11 end;

結果:

技術分享圖片

6.流程控制:

條件分支,語法:

BEGIN

  IF 條件1 then 執行1;

    Elsif 條件2 then 執行2 ; --註意不是 elseif ,是elsif

     Else 執行3

End if;

END

基於oracle 的PL/SQL編程-1