基於oracle 的PL/SQL編程-1

來源:互聯網
上載者:User

標籤:令行   home   strong   關閉   end   語句   stat   資料類型   zha   

  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_output是oracle的程式包,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 begin10   --直接賦值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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.