1. 程式人生 > >Oracle入門(十四.6)之使用標量資料型別

Oracle入門(十四.6)之使用標量資料型別

、宣告字元變數

字元資料型別包括CHAR,VARCHAR2和LONG。

DECLARE
 v_emp_job VARCHAR2(9);
 v_order_no VARCHAR2(6);
 v_product_id VARCHAR2(10);
 v_rpt_body_part LONG;
…

二、宣告數字變數

數字資料型別包括NUMBER,PLS_INTEGER,BINARY_INTEGER和BINARY_FLOAT。 在語法中,CONSTANT約束變數,使其值不能改變。 常量必須初始化。 INTEGER是NUMBER(38,0)的別名。

DECLARE
 v_dept_total_sal NUMBER(9,2) := 0;
 v_count_loop INTEGER := 0;
 c_tax_rate CONSTANT NUMBER(3,2) := 8.25;
 …

(1)宣告日期變數

日期資料型別包括DATE,TIMESTAMP和TIMESTAMP WITH TIMEZONE。

DECLARE
 v_orderdate DATE := SYSDATE + 7;
 v_natl_holiday DATE;
 v_web_sign_on_date TIMESTAMP;
…

(2)宣告布林變數

布林值是儲存用於邏輯計算的三個可能值之一的資料型別:TRUE,FALSE或NULL。

DECLARE
 v_valid BOOLEAN NOT NULL := TRUE;
 v_is_found BOOLEAN := FALSE;
 v_underage BOOLEAN;
…

宣告布林變數細節

宣告布林變數時:

•只能將值TRUE,FALSE和NULL分配給布林變數。
•條件表示式使用邏輯運算子AND和OR,而運算子不檢查變數值。
•變數總是產生TRUE,FALSE或NULL。
•您可以使用算術,字元和日期表示式來返回布林值。

三、宣告和初始化PL / SQL變數的準則

只有值TRUE,FALSE和NULL可以分配給布林變數。
•使用有意義的名稱並遵循命名約定。
•為了更好的可讀性,程式碼維護和更簡單的評論,每行宣告一個識別符號。
•當變數必須儲存一個值時,使用NOT NULL約束。

•避免使用列名作為識別符號。

DECLARE
 country_id CHAR(2);
BEGIN
 SELECT country_id
 INTO country_id
 FROM countries
 WHERE country_name = 'Canada';
END;

四、使用%TYPE屬性固定變數

您可以使用%TYPE屬性根據另一個先前宣告的變數或資料庫列宣告變數,而不是對變數的資料型別和精度進行硬編碼。

當儲存在變數中的值是從資料庫中的表派生時,最常使用%TYPE屬性。

當你使用%TYPE屬性宣告一個變數時,你應該用資料庫表和列名作為字首。

(1)%TYPE屬性

看看這個資料庫表和使用它的PL / SQL塊。 這個PL / SQL塊將正確的薪水儲存在v_emp_salary變數中。 但是如果表格列稍後改變呢?
CREATE TABLE myemps (
 emp_name VARCHAR2(6),
 emp_salary NUMBER(6,2));
DECLARE
 v_emp_salary NUMBER(6,2);
BEGIN
 SELECT emp_salary INTO v_emp_salary
 FROM myemps WHERE emp_name = 'Smith';
END;

(2)%TYPE屬性詳細資訊

%TYPE屬性:
•用於自動給變數賦予與以下相同的資料型別和大小:
- 資料庫列定義
- 另一個宣告的變數
•帶有以下任一項的字首:
- 資料庫表和列
- 其他宣告變數的名稱

(3)用%TYPE屬性宣告變數

句法:

identifier table.column_name%TYPE;

例子:

...
 v_emp_lname employees.last_name%TYPE;
 v_balance NUMBER(7,2);
 v_min_balance v_balance%TYPE := 1000;
...

(4)%TYPE屬性的優點

%TYPE屬性的優點是:
•您可以避免由資料型別不匹配或錯誤精度造成的錯誤。

•如果列定義更改,則不需要更改變數宣告。 也就是說,如果您已經為特定的表格聲明瞭一些變數而不使用%TYPE屬性,那麼如果宣告變數的列被更改,那麼PL / SQL塊可以返回錯誤。

•當您使用%TYPE屬性時,PL / SQL將在編譯塊時確定變數的資料型別和大小。 這確保了這樣的變數總是與用於填充它的列相容。

(5)%TYPE屬性

再看看資料庫表和PL / SQL塊。現在,即使列資料型別稍後發生更改,PL / SQL塊仍會繼續正常工作。
CREATE TABLE myemps (
 emp_name VARCHAR2(6),
 emp_salary NUMBER(6,2));
DECLARE
 v_emp_salary myemps.emp_salary%TYPE;
BEGIN
 SELECT emp_salary INTO v_emp_salary
 FROM myemps WHERE emp_name = 'Smith';
END;

相關推薦

Oracle入門.6使用標量資料型別

一、宣告字元變數字元資料型別包括CHAR,VARCHAR2和LONG。DECLARE v_emp_job VARCHAR2(9); v_order_no VARCHAR2(6); v_product_id VARCHAR2(10); v_rpt_body_part L

Oracle入門.22建立DDL和資料庫事件觸發器

一、什麼是DDL和資料庫事件觸發器?DDL語句觸發DDL觸發器:CREATE,ALTER或DROP。資料庫事件觸發器由資料庫中的非SQL事件觸發,例如:•使用者連線到資料庫或與資料庫斷開連線。•DBA啟動或關閉資料庫。•使用者會話中引發了特定的異常。(1)在DDL語句中建立觸

Oracle入門.13帶引數的遊標

一、帶引數的遊標    引數是一個變數,其名稱用於遊標宣告中。 當遊標開啟時,引數值被傳遞給Oracle伺服器,Oracle伺服器使用它來決定要將哪些行檢索到游標的活動集中。    這意味著您可以在塊中多次開啟和關閉顯式游標,或者在同一個塊的不同執行中開啟和關閉顯式游標,每次

python入門:面向對象屬性、方法、繼承

mage eat div 實例變量 統一 object 地址 面向對象 實例方法 任何東西1)屬性(特征:通常可以用數據來描述)(類變量和實例變量)2)可以做一些動作(方法)類來管理對象的數據。屬性:類變量和實例變量(私有變量)方法: 1)實例方法 2)類方法

OpenCV3入門影象特效—擠壓、哈哈鏡、扭曲

一、影象擠壓特效 1、原理 影象壓效果本質的影象座標的非線性變換,將影象向內擠壓,擠壓的過程產生壓縮變形,從而形成的效果。 擠壓效果的實現是通過極座標的形式,設影象中心為O(x,y),某點距離中心O的距離為半徑R,非線性方式改變半徑R但不改變點的方向,就構成了影象擠壓。也可以自定義加壓中心點,計算半徑方式相同

轉載通向架構師的道路Tomcat性能調優-讓小貓飛奔

adt val 響應 useragent lec threads 版本升級 基本 oracl 轉載自:https://blog.csdn.net/lifetragedy/article/details/7708724 參考文章:tomcat以及常用web容器線程池的實現原理

最全面詳細講解Oracle入門新手必看

本章內容: Ø Oracle介紹 Ø 安裝步驟 Ø 基本使用 Ø 使用者管理 一、Oracle資料庫簡介 Oracle資料庫是Oracle(甲骨文)公司的核心產品,適合於大型專案的開發;銀行、電信、電商、金融等各領域都大量使用Oracle資料庫。 Oracle資料庫是一

通向架構師的道路Tomcat效能調優-讓小貓飛奔

從“第三天”的效能測試一節中,我們得知了決定效能測試的幾個重要指標,它們是:ü   吞吐量ü   Responsetimeü   Cpuloadü   MemoryUsage我們也在第三天的學習中對Apache做過了一定的優化,使其最優化上述4大核心指標的讀數,那麼我們的Ap

通向架構師的道路Tomcat效能調優

轉自:http://blog.csdn.net/lifetragedy/article/details/7708724 從“第三天”的效能測試一節中,我們得知了決定效能測試的幾個重要指標,它們是: ü   吞吐量 ü   Responsetime ü   Cpulo

2.6 使用for迴圈遍歷檔案 2.7 使用while迴圈遍歷檔案 2.8 統計系統剩餘的記憶體 2.9 資料型別轉換計算計算mac地址 3.0 資料型別轉換列表與字典相互轉換

2.6 使用for迴圈遍歷檔案 open r:以只讀方式開啟 w: 以寫方式開啟 a: 以追加模式開啟 r+: 以讀寫模式開啟 w+: 以讀寫模式開啟(參見w) a+: 以讀寫模式開啟(參見a) rb: 以二進位制模式開啟 read 我們先寫一個檔案,叫1.txt 內容如下 111 22

python 入門 – 深度copy 與 資料型別記憶體地址

在深入瞭解 python 的 copy() 方法之前先回顧以前以前學過的變數賦值,如: a = 123123 b = a print(b) 毫無疑問,在變數中我可以直接以等於號來複制一個值出來,打印出來的是和 a 相等的值,如:123123,但是在陣列中為什麼用這種方法不行,最後找

Java從入門到放棄集合框架TreeMap原始碼

我們經常需要對一些集合按照指定的規則進行排序,比如學生按照學號排序,或者按照成績排序,集合裡面有專門排序的集合,如TreeMap。TreeMap裡面是使用的紅黑樹結構。 構造方法 private final Comparator<? su

Python爬蟲從入門到放棄 Scrapy框架中選擇器的用法

esp 技術分享 val arr con des image 使用 自己 原文地址https://www.cnblogs.com/zhaof/p/7189860.html Scrapy提取數據有自己的一套機制,被稱作選擇器(selectors),通過特定的Xpath或者CS

Python 爬蟲從入門到進階

之前的文章我們已經可以根據 re 模組,Xpath 模組和 BeautifulSoup4 模組來爬取網站上我們想要的資料並且儲存在本地,但是我們並沒有對儲存資料的格式有要求,本章我們就來看資料的儲存格式 JSON 及 Python 中的 json 模組。 JSON(JavaScript Object Not

Java入門系列集合HashMap原始碼分析

前言 我們知道在Java 8中對於HashMap引入了紅黑樹從而提高操作效能,由於在上一節我們已經通過圖解方式分析了紅黑樹原理,所以在接下來我們將更多精力投入到解析原理而不是演算法本身,HashMap在Java中是使用比較頻繁的鍵值對資料型別,所以我們非常有必要詳細去分析背後的具體實現原理,無論是C#還是J

Storm入門Twitter Storm源代碼分析CoordinatedBolt

業務 什麽 協議 ack 第一個 ng- rec 功能 這一 作者: xumingming | 可以轉載, 但必須以超鏈接形式標明文章原始出處和作者信息及版權聲明網址: http://xumingming.sinaapp.com/811/twitter-storm-code

全棧JavaScriptHTML5 中與class屬性相關的擴充

mov html5 表示 方法 popu dom add data- token 1. getElementByClassName() :支持getElementsByClassName()方法的瀏覽器有IE 9+、Firefox 3+、Safari

MySQL數據備份與還原

pic 還原 mysql .com ace sql .cn uid 數據備份 http://pic.cnhubei.com/space.php?uid=4614&do=album&id=1719909http://pic.cnhubei.com/space.

【ASP.NET Core快速入門MVC開發:UI、 EF + Identity實現

dfa models cti ted lec inpu word pri numeric 前言 之前我們進行了MVC的web頁面的Cookie-based認證實現,接下來的開發我們要基於之前的MvcCookieAuthSample項目做修改。 MvcCookieAuth

C邏輯運算符

C語言 && || ! 我們在 C 語言中經常會遇到邏輯運算符。|| 是從左向右開始計算的,當遇到為真的條件時停止計算,整個表達式為真;所有條件為假時表達式才為假。 && 是從左向右開始計算,當遇到為假的條件時停止計算,整個表達式為假;所有條件為真時表達式才為真