PL/SQL編程基礎(二):變量的聲明、賦值、(賦值、連接、關系、邏輯)運算符


變量的聲明、賦值、運算符

1.聲明並使用變量

  • 變量可以在聲明時賦值,也可以先定義后賦值;
  • 使用%TYPE%ROWTYPE可以根據已有類型定義變量。

PL/SQL是一種強類型的編程語言,所有的變量都必須在它聲明之后才可以使用,變量都要求在DECLARE部分進行聲明,而對於變量的名稱也有如下的一些規定:

  • 變量名稱的組成可以由字母、數字、_$#等組成;
  • 所有的變量名稱要求以字母開頭,不能是Oracle中的保留字(關鍵字)
  • 變量的長度最多只能為30個字符。

聲明變量的語法

  • 所有的變量都要求在DECLARE部分之中進行,在定義變量的時候也可以為其賦默認值,變量聲明語法如下:
    • 變量名稱 [CONSTANT] 類型 [NOT NULL] [:=value] ;
  • 組成:

CONSTANT

定義常量,必須在聲明時為其賦予默認值;

NOT NULL

表示此變量不允許設置為NULL;

:=value

表示在變量聲明時,設置好其初始化內容。

定義變量不設置默認值

DECLARE

 v_result VARCHAR2(30);----這里沒有賦值

 BEGIN

 DBMS_OUTPUT.put_line('v_result的內容是['||v_result||']');

 END;

   /

v_result的內容是[]

定義變量

DECLARE

v_resultA NUMBER := 100 ;    -- 定義一個變量同時賦值

v_resultB NUMBER ;        -- 定義一個變量沒有設置內容

BEGIN

v_resultb := 30 ;            -- 沒有區分大小寫

DBMS_OUTPUT.put_line('計算的結果是:' || (v_resultA + v_resultB) ) ;

END ;

/

定義非空變量

DECLARE

v_resultA NUMBER NOT NULL := 100 ; -- 定義一個非空變量v_resultA,同時賦值

BEGIN

DBMS_OUTPUT.put_line('v_resultA變量內容:' || (v_resultA) ) ;

END ;

/

定義常量

DECLARE

v_resultA CONSTANT NUMBER NOT NULL := 100 ; -- 定義一個常量同時賦值

BEGIN

DBMS_OUTPUT.put_line('v_resultA常量內容:' || (v_resultA) ) ;

END ;

/

 

2.使用%TYPE聲明變量類型

  • 在編寫PL/SQL程序的時候,如果希望某一個變量與指定數據表中某一列的類型一樣,則可以采用“變量定義 表名稱.字段名稱%TYPE的格式,這樣指定的變量就具備了與指定的字段相同的類型。

使用“%TYPE”定義變量

DECLARE

eno        emp.empno%TYPE ;     -- empno類型相同

ename    emp.ename%TYPE ; -- ename類型相同

BEGIN

DBMS_OUTPUT.put_line('請輸入雇員編號:') ;

eno := &empno ;                -- 由鍵盤輸入雇員編號

SELECT ename INTO ename FROM emp WHERE empno=eno ;

DBMS_OUTPUT.put_line('編號為:' || eno || '雇員的名字為:'|| ename) ;

END ;

/

編號為:7900雇員的名字為:JAMES

 

3.使用%ROWTYPE聲明變量類型

  • 使用“%ROWTYPE標記可以定義定義表中一行記錄的類型。
  • 當用戶使用了“SELECT … INTO …將表中的一行記錄設置到了ROWTYPE類型的變量之中,就可以利用“rowtype變量.表字段”的方式取得表中每行的對應列數據。

使用ROWTYPE裝載一行記錄

DECLARE

deptRow    dept%ROWTYPE ;        -- 裝載一行dept記錄

BEGIN

SELECT * INTO deptRow FROM dept WHERE deptno=10 ;

DBMS_OUTPUT.put_line('部門編號:'||deptRow.deptno || ',名稱:' || deptRow.dname || ',位置:' || deptRow.loc) ;

END ;

/

部門編號:10,名稱:ACCOUNTING,位置:NEW YORK

 

運算符

賦值運算符、連接運算符、關系運算符、邏輯運算符

  • 賦值運算符
    • 賦值運算符的主要功能是將一個數值賦予指定數據類型的變量,在之前聲明變量時已經使用此運算符,其使用語法如下所示。
    • 變量 := 表達式 ;
  • 連接運算符
    • 連接運算符使用“||”即可完成操作。
  • 關系運算符
    • 關系運算符主要使用的是之前講解限定查詢時使用過的若干操作符

運算符

符號

描述

關系運算符

>、<、>=、<=、=、!=、<>

進行大小或相等的比較,其中不等於有兩種:!=和<>

判斷null

IS NULL、IS NOT NULL

判斷某一列的內容是否是null

邏輯運算符

AND、OR、NOT

AND表示多個條件必須同時滿足,OR表示只需要有一個條件滿足即可,NOT表示條件去反,即:真變假、假變真

范圍查詢

BETWEE 最小值 AND 最大值

在一個指定范圍中進行查找,查找結果為:“最小值<=內容<=最大值”

范圍查詢

IN

通過IN可以指定一個查詢的范圍

模糊查詢

LIKE

可以對指定的字段進行模糊查詢

  • 邏輯運算符

使用邏輯運算符可以連接多個布爾表達式的結果,在PL/SQL中邏輯運算符一共包含了三種:AND、OR、NOT。

與(AND

連接多個條件,多個條件同時滿足時才返回TRUE,有一個條件不滿足結果就是FALSE;

或(OR

連接多個條件,多個條件之中只要有一個返回TRUE,結果就是TRUE,如果多個條件返回的都是FALSE,則結果才是FALSE;

非(NOT

求反操作,可以將TRUE變FALSE、FALSE變TRUE。

使用賦值運算符

DECLARE

v_info    VARCHAR2(50) := '尋香徑' ;

v_url        VARCHAR2(50) ;

BEGIN

v_url := 'http://www.cnblogs.com/thescentedpath/' ;

DBMS_OUTPUT.put_line(v_info) ;

DBMS_OUTPUT.put_line(v_url) ;

END ;

/

字符串連接

DECLARE

v_info    VARCHAR2(50) := '尋香徑' ;

v_url        VARCHAR2(50) ;

BEGIN

v_url := 'http://www.cnblogs.com/thescentedpath/' ;

DBMS_OUTPUT.put_line(v_info || ',網址:' || v_url) ;

END ;

/

使用關系運算符

DECLARE

v_url        VARCHAR2(50) := 'http://www.cnblogs.com/thescentedpath/' ;

v_num1        NUMBER := 80 ;

v_num2        NUMBER := 30 ;

BEGIN

IF v_num1 > v_num2 THEN

DBMS_OUTPUT.put_line('1個數字比第2個數字大。') ;

END IF ;

IF v_url LIKE '%wendy%' THEN

DBMS_OUTPUT.put_line('網址之中包含wendy單詞。') ;

END IF ;

END ;

/

觀察邏輯運算結果

DECLARE

v_flag1        BOOLEAN := TRUE ;

v_flag2        BOOLEAN := FALSE ;

v_flag3        BOOLEAN ;

BEGIN

IF v_flag1 AND ( NOT v_flag2 ) THEN

DBMS_OUTPUT.put_line('v_flag1 AND ( NOT v_flag2 ) = TRUE') ;

END IF ;

IF v_flag1 OR v_flag3 THEN

DBMS_OUTPUT.put_line('v_flag1 OR v_flag3 = TRUE') ;

END IF ;

IF v_flag1 AND v_flag3 IS NULL THEN

DBMS_OUTPUT.put_line('v_flag1 AND v_flag3 的結果為NULL') ;

END IF ;

END ;

/

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM