日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

PL/SQL复合变量

發(fā)布時(shí)間:2025/7/14 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PL/SQL复合变量 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

復(fù)合變量可以將不同數(shù)據(jù)類型的多個(gè)值存儲(chǔ)在一個(gè)單元中。由于復(fù)合類型可以由用戶自己根據(jù)需要定義其結(jié)構(gòu),所以復(fù)合數(shù)據(jù)類型也稱為自定義數(shù)據(jù)類型。


在PL/SQL中,使用%TYPE聲明的變量類型與數(shù)據(jù)表中字段的數(shù)據(jù)類型相同,當(dāng)數(shù)據(jù)表中字段數(shù)據(jù)類型修改后,PL/SQL程序中相應(yīng)變量的類型也自動(dòng)隨之改變。

如EMP表中有一個(gè)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)時(shí),v_name變量的數(shù)據(jù)類型也自動(dòng)修改為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來存儲(chǔ)一行數(shù)據(jù)。例如,要定義DEPT表中的一行記錄,并且數(shù)據(jù)類型和每列類型一致可以使用%ROWTYPE,聲明如下:

dept_record dept%ROWTYPE;

下面使用%ROWTYPE類型的變量存儲(chǔ)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)非常類似,使用記錄類型定義的變量可以存儲(chǔ)由多個(gè)列值組成的一行數(shù)據(jù)。當(dāng)使用記錄類型的變量時(shí),首先需要定義記錄的結(jié)構(gòu),然后定義記錄類型的變量。定義記錄類型時(shí)必須使用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;

/

本文轉(zhuǎn)自yeleven 51CTO博客,原文鏈接:http://blog.51cto.com/11317783/1879799


總結(jié)

以上是生活随笔為你收集整理的PL/SQL复合变量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。