oracle高级4

本文详细介绍了在PL/SQL中如何定义及使用变长数组,包括作为变量和表列的数据类型,并展示了插入、更新和读取变长数组的具体操作。

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

复合类型:
第一种:可变长的数组类型:
  SET SERVEROUT ON
      DECLARE
        TYPE sname_type IS VARRAY(5) OF VARCHAR2(10);
        sname_varry sname_type;
        v_id Students.student_id%TYPE;
      BEGIN
        v_id := &student_id;
        sname_varry := sname_type('张三','李四','黄五');
        SELECT name
        INTO sname_varry(3)
        FROM Students
        WHERE student_id = v_id;
        DBMS_OUTPUT.PUT_LINE ('学生1姓名:'||sname_varry(1));
        DBMS_OUTPUT.PUT_LINE ('学生2姓名:'||sname_varry(2));
        DBMS_OUTPUT.PUT_LINE ('学生2姓名:'||sname_varry(3));
      END;


第二种:
变长数组作为表列的数据类型

CREATE TYPE studname_type IS VARRAY(15) OF VARCHAR2(10);

CREATE TABLE hierophants(
  hierophant_id NUMBER(5)
    CONSTRAINT hierophant_pk PRIMARY KEY,
  hierophant_name VARCHAR2(10) NOT NULL,
  student_name studname_type
);


BEGIN
  INSERT INTO hierophants
    VALUES(10101,'王彤',studname_type('王晓芳','张纯玉','刘春苹'));
END;

第三:读取数组

SET SERVEROUT ON
      DECLARE
        studname_varry studname_type;
      BEGIN
        SELECT student_name INTO studname_varry
          FROM hierophants
            WHERE hierophant_name = '王彤';
        DBMS_OUTPUT.PUT_LINE ('王彤导师的研究生姓名:');
        FOR i IN 1..studname_varry.COUNT LOOP
           DBMS_OUTPUT.PUT_LINE (studname_varry(i));
        END LOOP;
      END;

第四赋值:
 DECLARE
        studname_varry studname_type :=
          studname_type('王一','张三','刘四');
      BEGIN
        UPDATE hierophants
        SET student_name = studname_varry
        WHERE hierophant_name = '王彤';
      END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值