Oracle入门(十四.6)之使用标量数据类型
生活随笔
收集整理的這篇文章主要介紹了
Oracle入门(十四.6)之使用标量数据类型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、聲明字符變量
字符數據類型包括CHAR,VARCHAR2和LONG。
DECLAREv_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)的別名。
DECLAREv_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。
DECLAREv_orderdate DATE := SYSDATE + 7;v_natl_holiday DATE;v_web_sign_on_date TIMESTAMP; …(2)聲明布爾變量
布爾值是存儲用于邏輯計算的三個可能值之一的數據類型:TRUE,FALSE或NULL。
DECLAREv_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約束。
?避免使用列名作為標識符。
DECLAREcountry_id CHAR(2); BEGINSELECT country_idINTO country_idFROM countriesWHERE 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)); DECLAREv_emp_salary NUMBER(6,2); BEGINSELECT emp_salary INTO v_emp_salaryFROM 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)); DECLAREv_emp_salary myemps.emp_salary%TYPE; BEGINSELECT emp_salary INTO v_emp_salaryFROM myemps WHERE emp_name = 'Smith'; END;
總結
以上是生活随笔為你收集整理的Oracle入门(十四.6)之使用标量数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 涧的意思 涧什么意思
- 下一篇: 美光在马来西亚启用其最先进的组装和测试工