日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

PL/SQL复合变量

發布時間:2025/7/14 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PL/SQL复合变量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

復合變量可以將不同數據類型的多個值存儲在一個單元中。由于復合類型可以由用戶自己根據需要定義其結構,所以復合數據類型也稱為自定義數據類型。


在PL/SQL中,使用%TYPE聲明的變量類型與數據表中字段的數據類型相同,當數據表中字段數據類型修改后,PL/SQL程序中相應變量的類型也自動隨之改變。

如EMP表中有一個ENAME字段,其數據類型為VARCHAR2(30),聲明變量v_name用來存放ENAME字段的數據,聲明如下:

v_name emp.ename%TYPE;

則變量v_name的數據類型始終與ENAME字段的類型保持一致,即VARCHAR2(30),當ENAME字段的數據類型改為VARCHAR2(50)時,v_name變量的數據類型也自動修改為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來存儲一行數據。例如,要定義DEPT表中的一行記錄,并且數據類型和每列類型一致可以使用%ROWTYPE,聲明如下:

dept_record dept%ROWTYPE;

下面使用%ROWTYPE類型的變量存儲DEPT表中的一行數據,示例如下:

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;

/


記錄類型與數據庫中的行結構非常類似,使用記錄類型定義的變量可以存儲由多個列值組成的一行數據。當使用記錄類型的變量時,首先需要定義記錄的結構,然后定義記錄類型的變量。定義記錄類型時必須使用TYPE語句指出將在記錄中包含的字段及其數據類型,語法如下:

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;

/

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


總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。