如何在plsql中初始化一个矩阵 [英] How to initialize a matrix in plsql

查看:157
本文介绍了如何在plsql中初始化一个矩阵的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图用关联数组映射一个表,但我无法弄清楚如何初始化它。

以下是一个例子:

 类型记录类型记录

value1 NUMBER,
value2 NUMBER,
value3 NUMBER
);
TYPE TblType IS RecType的表格INDEX BY PLS_INTEGER;
TYPE TblOfTblType是TblType INDEX BY PLS_INTEGER的表格;
矩阵TblOfTblType;

现在,当我试图初始化这个矩阵时:

  FOR IN IN matrix.FIRST .. matrix.LAST LOOP 
FOR j IN矩阵(i).FIRST ..矩阵(i).LAST LOOP
矩阵(i)(j):= NULL;
END LOOP;
END LOOP;

这行不通!我也试过

  matrix:= TblOfTblType()(); 

显示以下错误:


PLS-00363表达式'Matrix'不能用作赋值目标。


解决方案你不需要使用关联数组 - 一个集合就可以工作。

  DECLARE 
TYPE RecType IS RECORD

value1 NUMBER,
value2 NUMBER,
value3 NUMBER
);
TYPE TblType是RecType的表格;
TYPE TblOfTblType是TblType的表格;
矩阵TblOfTblType:= TblOfTblType();
BEGIN
matrix.EXTEND(3);
FOR I IN 1 .. matrix.COUNT LOOP
matrix(i):= TblType();
矩阵(i).EXTEND(4);
FOR j IN 1 ..矩阵(i).COUNT LOOP
矩阵(i)(j).value1:= i;
矩阵(i)(j).value2:= j;
矩阵(i)(j).value3:= DBMS_RANDOM.VALUE;
END LOOP;
END LOOP;

FOR i 1 .. matrix.COUNT LOOP
FOR j IN 1 .. matrix(i).COUNT LOOP
DBMS_OUTPUT.PUT('['|| matrix( i)(j).value1
||','|| matrix(i)(j).value2
||','|| matrix(i)(j).value3 ||' ]'|| CHR(11));
END LOOP;
DBMS_OUTPUT.NEW_LINE;
END LOOP;
END;
/


I've tried to Map a table with associative arrays , but i can't figure out how to initialize it

here is an example :

TYPE RecType IS RECORD
 (
  value1   NUMBER,
  value2   NUMBER,
  value3   NUMBER
 );
 TYPE TblType IS TABLE OF RecType INDEX BY PLS_INTEGER;
 TYPE TblOfTblType IS TABLE OF TblType INDEX BY PLS_INTEGER;
 matrix   TblOfTblType;

Now when i tried to initialize the matrix like this :

FOR i IN matrix.FIRST .. matrix.LAST LOOP
  FOR j IN matrix (i).FIRST .. matrix (i).LAST LOOP
       matrix(i)(j) := NULL;  
  END LOOP;
END LOOP;

It doesn't work !I also tried

matrix := TblOfTblType()();

it shows the following error :

PLS-00363 expression 'Matrix' cannot be used as an assignment target .

解决方案

You do not need to use an associative array - a collection will work.

DECLARE
  TYPE RecType IS RECORD
  (
    value1   NUMBER,
    value2   NUMBER,
    value3   NUMBER
  );
  TYPE TblType IS TABLE OF RecType;
  TYPE TblOfTblType IS TABLE OF TblType;
  matrix   TblOfTblType := TblOfTblType();
BEGIN
  matrix.EXTEND(3);
  FOR i IN 1 .. matrix.COUNT LOOP
    matrix(i) := TblType();
    matrix(i).EXTEND(4);
    FOR j IN 1 .. matrix(i).COUNT LOOP
      matrix(i)(j).value1 := i;
      matrix(i)(j).value2 := j;
      matrix(i)(j).value3 := DBMS_RANDOM.VALUE;
    END LOOP;
  END LOOP;

  FOR i IN 1 .. matrix.COUNT LOOP
    FOR j IN 1 .. matrix(i).COUNT LOOP
      DBMS_OUTPUT.PUT( '[' || matrix(i)(j).value1
                    || ',' || matrix(i)(j).value2
                    || ',' || matrix(i)(j).value3 || ']' || CHR(11) );
    END LOOP;
    DBMS_OUTPUT.NEW_LINE;
  END LOOP;
END;
/

这篇关于如何在plsql中初始化一个矩阵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆