定義并使用變量
十多年的沁水網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整沁水建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“沁水網(wǎng)站設(shè)計(jì)”,“沁水網(wǎng)站推廣”以來,每個客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
PL/SQL有四種類型:標(biāo)量類型,復(fù)合類型,引用類型 (reference),LOB(Large Obejct)類型
一、標(biāo)量類型
最常用的就是標(biāo)量類型,是指只能存放單個數(shù)值的變量,包括數(shù)字類型、字符類型、日期類型和布爾類型,每種類型又包含相應(yīng)的子類型。
常量標(biāo)量類型如下:
VARCHAR2 (n) , CHAR (n), NUMBER (p,s),DATE, TIMESTAMP , LONG , LONG RAW ,BOOLEAN,BINARY_INTEGER(僅 PL / SQL使用),BINARY_FLOAT和BINARY_DOUBLE(10g新引入的)
定義標(biāo)量:
identifier [CONSTANT] datatype [NOT NULL] [:=| DEFAULT expr]
使用標(biāo)量需要注意的是=號被:=取代,與delphi一樣的賦值符號@_@
例子:
v_name VARCHAR2 ( 10 );
v_rate CONSTANTS NUMBER ( 4 , 2 ) : = 3.04 ;
為了防止定義的變量類型與表中的字段類型不一致,可以使用%TYPE來定義:
v_name employee.name % TYPE;
如上面所示,v_name的類型就與表 employee中的name字段類型一樣??!
二、復(fù)合變量:
用于存放多個值的變量稱為復(fù)合變量,包括PL/SQL記錄,PL/SQL表,嵌套表和VARRAY四種類型
1.PL/SQL記錄
類似于C/C++中的結(jié)構(gòu)概念:
declare
TYPE employee_record is RECORD(
id employee.id % TYPE,
name employee.name % TYPE,
email employee.email % TYPE);
em_record employee_record;
begin
select id,name,email into em_record from employee where name = name;
dbms_output.put_line( ' 雇員名: ' || em_record.name || ' 雇員ID: ' || em_record.id);
end ;
2.PL/SQL表,類似于數(shù)組概念,不同的是PL/SQL表允許負(fù)值下標(biāo),而且沒有上下限,如:
declare
TYPE employee_table is table of employee.name % TYPE index by BINaRY_INTEGER;
em_table employee_table;
begin
select name into em_table( - 1 ) from employee where name = name;
dbms_output.put_line( ' 雇員名: ' || em_table( - 1 ));
end ;
3.嵌套表,與PL/SQL 表相似,不同的是嵌套表可以做表列的數(shù)據(jù)類型,而PL/SQL表不能,使用嵌套表作為表列時,必須為其指定專門的存儲表,如:
create or replace TYPE emp_type as OBJECT(name VARCHAR2 ( 10 ),salary NUMBER ( 6 , 2 ),hiredate DATE);
CREATE OR REPLACE TYPE emp_array IS TABLE OF emp_type;
CREATE TABLE department(
deptno NUMBER ( 2 ),dname VARCHAR2 ( 10 ),
employee emp_array)NESTED TABLE employee STORE as employee_dept;
4.VARRAY(變長數(shù)組),與嵌套表相似,也可以做為表列的數(shù)據(jù)類型,但是嵌套表沒有個數(shù)限制,而VARRAY有個數(shù)限制,如:
CREATE TYPE TEST_ARRAY IS VARRAY(20) OF emp_type;
三、引用變量(reference)
類似于C++中的指針或者JAVA中引用的概念,用于存放數(shù)值指針的變量,使用此變量,可以使得應(yīng)用程序共享相同對象,降低占用空間。此類有兩種類型:游標(biāo)(REF CURSOR)和對象類型(REF OBJECT)
1.REF CURSOR,定義時同時指定SELECT語句的游標(biāo)稱為顯式或者靜態(tài)游標(biāo),在打開時才指定SELECT語句的游標(biāo)稱為動態(tài)游標(biāo),如:
DECLARE
TYPE c1 IS REF CURSOR ;
emp_cursor c1;
v_name employee.name % TYPE;
v_sal employee.salary % TYPE;
begin
open emp_cursor for
SELECT name,salary FROM EMPLOYEE ;
LOOP
FETCH emp_cursor INTO v_name,v_sal;
EXIT WHEN emp_cursor % NOTFOUND;
dbms_output.put_line(v_name);
END LOOP;
close emp_cursor;
end ;
2.REF OBJECT,與JAVA的引用概念相同,存儲的是指向?qū)ο蟮闹羔?/p>
四、LOB類型
LOB類型是指用于存儲大批量數(shù)據(jù)的變量,包括內(nèi)部的3種(CLOB,BLOB,NCLOB)和外部LOB(BFILE)。
CLOB,NCLOB用于存儲大量的字符數(shù)據(jù)。
BLOB用于存儲大批量二進(jìn)制數(shù)據(jù)(如圖象)。
BFILE則存儲指向OS文件的指針。
將insert 語句寫在end之前,這是個plsql的匿名塊,insert語句應(yīng)該包含在其中。
需要設(shè)置Oracle_HOME和ORACLE_SID兩個環(huán)境變量,再把ORACLE的bin目錄添加到PATH中即可,通常缺省安裝的情況下:
ORACLE_SID=orcl
ORACLE_HOME=/home/oracle/oracle/product/10......這樣的形式
操作步驟:
1、su oracle并回車切換到oracle用戶;
2、cd并回車回到oracle用戶目錄;
cd /home/oracle
ls -a
3、vi .bash_profile并回車編輯該文件,按I鍵進(jìn)入插入狀態(tài),在最后加入以下行:
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
輸入完畢后按ESC鍵退出vi編輯狀態(tài),
輸入:wq并回車存盤退出。
注銷所有oracle用戶,再使用oracle登錄即可。
注意輸入wq前面有個:冒號,先輸入這個:就可以在編輯器最底端輸入命令了。
oracle的環(huán)境變量是不需要配置的
Path環(huán)境變量中加入oracle的app路徑D:\app\xxx\product\12.1.0\dbhome_1\bin
然后在系統(tǒng)變量中添加字符集NLS_LANG,設(shè)為與oracle一樣的字符集,一般為AMERICAN_AMERICA.ZHS16GBK
插入數(shù)據(jù)分為兩種情況,一種是用insert into ...values 的語法,一種是用insert into select ...的語法。 舉例: 如test表中有如下數(shù)據(jù): 插入一條id為6,name為楊七的數(shù)據(jù)。 insert into test values (6,'楊七');commit;此時表中數(shù)據(jù)為
1、首先打開oracle數(shù)據(jù)庫,如下圖所示。
2、在Oracle中,對于函數(shù)的變量賦值,通常有三種方法來進(jìn)行處理,直接賦值的方法,可以在聲明變量的時候直接給變量進(jìn)行賦值。
3、其次,可以使用SELECT語句對變量進(jìn)行賦值,主要是SELECT INTO語句,如下代碼示例,將變量v_minvar賦予Min(t.sal)的值。
4、最后就是動態(tài)SQL語句賦值了,如下代碼。