PL/SQL 索引表

本文介绍了PL/SQL中的索引表,包括如何定义索引表类型,如NOT NULL约束,以及使用索引表时的注意事项,如通过EXISTS()验证指定索引位置的数据存在。同时提到了ROWTYPE类型的索引表定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义索引表
TYPE 类型名称 IS TABLE OF 数据类型 [NOT NULL]
INDEX BY [PLS_INTEGER | BINARY_INTEGER | VARCHAR2(长度)];

SQL> DECLARE
  2     TYPE info_index is TABLE OF VARCHAR(20)
  3     INDEX BY PLS_INTEGER;
  4     v_info info_index;
  5     BEGIN
  6     v_info(1):='Wind';
  7     v_info(10):='Rian';
  8     DBMS_OUTPUT.put_line(v_info(1));
  9     DBMS_OUTPUT.put_line(v_info(10));
 10     END;
 11     /
Wind
Rian

PL/SQL 过程已成功完成。

由于索引表中的索引号是非固定的,如果要使用某一指定索引位置数据是,建议使用 索引表对象,EXISTS()
进行验证

DECLARE 
	TYPE info_index is TABLE OF VARCHAR(20)
	INDEX BY PLS_INTEGER;
	v_info info_index;
	BEGIN
	v_info(1):='Wind';
	v_info(10):='Rian';
	IF v_info.EXISTS(10) THEN
	DBMS_OUTPUT.put_line(v_info(1));
	END IF;
	IF v_info.EXISTS(30) THEN
	DBMS_OUTPUT.put_line(v_info(30));
	ELSE
	DBMS_OUTPUT.put_line('索引号为30的数据不存在');
	END IF;
END;
/

定义ROWTYPE 型的索引表

DECLARE 
	TYPE dept_index is TABLE OF dept%ROWTYPE
	INDEX BY PLS_INTEGER;
	v_dept dept_index;
  BEGIN
		v_dept(0).deptno:=80;
		v_dept(0).dname:='Wind';
		v_dept(0).loc:='RIAN';
	if v_dept.EXISTS(0) THEN
			DBMS_OUTPUT.put_line('部门编号:'||v_dept(0).deptno||',名称:'||v_dept(0).dname||
			',位置:'||v_dept(0).loc);
	 END IF;
	END;
/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值