database - 我如何用 pl/sql 中的记录项初始化数组?

标签 database oracle plsql

我对 pl/sql 比较陌生,我正在尝试创建一个包含记录对象的列表,但我不知道如何为列表中的每个项目初始化记录项目中的两个字段。例如:在过程“新项目”中我如何初始化示例(1)?与 example(1).id_std := 整数 和 example(1).procent := 整数 ?谢谢!

这就是我的代码的样子:

set serveroutput on;
CREATE OR REPLACE PACKAGE newExercise IS
      TYPE item IS RECORD(
      id_std INTEGER,
      procent INTEGER
      ); 
     TYPE tabel IS VARRAY(5) OF item;
     PROCEDURE newItem (example tabel);
     example2 tabel := tabel();
end newExercise;
/
CREATE OR REPLACE PACKAGE BODY newExercise IS

    PROCEDURE newItem (example tabel) IS
    BEGIN
    FOR i IN 1..example.LIMIT LOOP
      DBMS_OUTPUT.PUT_LINE(example(i));
    end loop;
    end newItem;
end newExercise;
/

最佳答案

记录类型用于存储查询结果。所以你可以这样做:

declare
    recs newExercise.tabel;
begin
    select level, level * 0.25
    bulk collect into recs
    from dual
    connect by level <= 5;

    newExercise.newItem (recs);
end;
/

请注意,VARRAY 不是适合此目的的集合类型,因为并不总是可以预测查询将返回多少行。最好用一下

TYPE tabel IS table OF item;

关于database - 我如何用 pl/sql 中的记录项初始化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49434478/

相关文章:

mysql - MySQL、PostgreSQL、SQLite中数据库列类型的比较? (交叉映射)

mysql - 使用第三个表连接两个表 (SQL)

sql - 确定查询的进度 (Oracle PL/SQL)

sql - 在 Oracle SQL 中选择 xpath 值作为单独的行

java - Spring SQLUpdate 将时间为零的日期插入数据库

oracle - 通过 DBLink 移动 XML

ruby-on-rails - 我可以在 ROR 中使用文本文件作为我的数据库吗?

sql - SP2-0734 : unknown command beginning select

sql - DROP、TRUNCATE 和 DELETE 之间的区别和最佳用途是什么?它们可以回滚吗?

java - 将字符串数组从java传递给pl/sql函数