復(fù)合變量可以將不同數(shù)據(jù)類型的多個值存儲在一個單元中。由于復(fù)合類型可以由用戶自己根據(jù)需要定義其結(jié)構(gòu),所以復(fù)合數(shù)據(jù)類型也稱為自定義數(shù)據(jù)類型。
創(chuàng)新互聯(lián)建站是專業(yè)的新林網(wǎng)站建設(shè)公司,新林接單;提供做網(wǎng)站、網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行新林網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
在PL/SQL中,使用%TYPE聲明的變量類型與數(shù)據(jù)表中字段的數(shù)據(jù)類型相同,當(dāng)數(shù)據(jù)表中字段數(shù)據(jù)類型修改后,PL/SQL程序中相應(yīng)變量的類型也自動隨之改變。
如EMP表中有一個ENAME字段,其數(shù)據(jù)類型為VARCHAR2(30),聲明變量v_name用來存放ENAME字段的數(shù)據(jù),聲明如下:
v_name emp.ename%TYPE;
則變量v_name的數(shù)據(jù)類型始終與ENAME字段的類型保持一致,即VARCHAR2(30),當(dāng)ENAME字段的數(shù)據(jù)類型改為VARCHAR2(50)時,v_name變量的數(shù)據(jù)類型也自動修改為VARCHAR2(50)。
DECLARE
v_name emp.ename%TYPE;
BEGIN
SELECT ename INTO v_name FROM emp
WHERE empno=7788;
DBMS_OUTPUT.PUT_LINE(v_name);
END;
/
PL/SQL提供了%ROWTYPE來存儲一行數(shù)據(jù)。例如,要定義DEPT表中的一行記錄,并且數(shù)據(jù)類型和每列類型一致可以使用%ROWTYPE,聲明如下:
dept_record dept%ROWTYPE;
下面使用%ROWTYPE類型的變量存儲DEPT表中的一行數(shù)據(jù),示例如下:
DECLARE
v_dept dept%ROWTYPE;
BEGIN
SELECT * INTO v_dept FROM dept
WHERE deptno=30;
DBMS_OUTPUT.PUT_LINE(v_dept.deptno);
DBMS_OUTPUT.PUT_LINE(v_dept.dname);
DBMS_OUTPUT.PUT_LINE(v_dept.loc);
END;
/
記錄類型與數(shù)據(jù)庫中的行結(jié)構(gòu)非常類似,使用記錄類型定義的變量可以存儲由多個列值組成的一行數(shù)據(jù)。當(dāng)使用記錄類型的變量時,首先需要定義記錄的結(jié)構(gòu),然后定義記錄類型的變量。定義記錄類型時必須使用TYPE語句指出將在記錄中包含的字段及其數(shù)據(jù)類型,語法如下:
DECLARE
TYPE emp_record_type IS RECORD(
name emp.ename%TYPE,
salary emp.sal%TYPE,
dno emp.deptno%TYPE); --自定義變量類型emp_record_type
emp_record emp_record_type; --定義emp_record_type類型的變量emp_record
BEGIN
SELECT ename,sal,deptno INTO emp_record
FROM emp WHERE empno=7788; --查詢ename,sal,deptno賦值給變量emp_record
DBMS_OUTPUT.PUT_LINE(emp_record.name);
END;
/
--------------------------------------------------
DECLARE
TYPE emp_record_type IS RECORD(
name emp.ename%TYPE,
salary emp.sal%TYPE,
dno emp.deptno%TYPE); --自定義變量類型emp_record_type
emp_record emp_record_type; --定義emp_record_type類型的變量emp_record
BEGIN
SELECT ename,sal INTO emp_record.name,epm_record.salary
FROM emp WHERE empno=7788; --查詢ename,sal,deptno賦值給變量emp_record
DBMS_OUTPUT.PUT_LINE(emp_record.name);
END;
/
當(dāng)前題目:PL/SQL復(fù)合變量
瀏覽地址:http://aaarwkj.com/article20/gipgjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站收錄、外貿(mào)建站、搜索引擎優(yōu)化、定制開發(fā)、App設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)