teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

コード修正とテーブル定義。

2019/12/19 15:40

投稿

teefpc
teefpc

スコア112

title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,7 @@
5
5
  TYPE tElement IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
6
6
  TYPE tSquare IS TABLE OF tElement INDEX BY BINARY_INTEGER;
7
7
 
8
- vSquare tSquare
8
+ vSquare tSquare;
9
9
  vSquare(0)(0) := 0;
10
10
  vSquare(0)(1) := 1;
11
11
  ...
@@ -21,18 +21,34 @@
21
21
  TYPE tElement IS TABLE OF MY_TABLE_A%ROWTYPE INDEX BY BINARY_INTEGER;
22
22
  TYPE tSquare IS TABLE OF tElement INDEX BY BINARY_INTEGER;
23
23
 
24
- vSquare tSquare
24
+ vSquare tSquare;
25
25
  vSquare(0)(0) := 1000;
26
26
  vSquare(0)(1) := 'ABC';
27
27
  ...
28
28
  ```
29
29
 
30
+ ```TABLE
31
+ CREATE TABLE MY_TABLE_A (
32
+ num NUMBER(5) NOT NULL,
33
+ name VARCHAR2(15) NOT NULL,
34
+ score1 NUMBER(10) NOT NULL,
35
+ score2 NUMBER(10) NOT NULL,
36
+ score3 NUMBER(10) NOT NULL,
37
+ score4 NUMBER(10) NOT NULL,
38
+ score5 NUMBER(10) NOT NULL,
39
+ score6 NUMBER(10) NOT NULL,
40
+ score7 NUMBER(10) NOT NULL,
41
+ score8 NUMBER(10) NOT NULL,
42
+ score9 NUMBER(10) NOT NULL
43
+ );
44
+ ```
45
+
30
46
  としてみたことです。
31
47
  しかし、どこでおかしくなっているのかわかりませんが、vSquareのどこかのデータを取得しようとすると、「型が違います」というエラーで中断されます。
32
48
 
33
49
  たとえば、
34
50
  ```PL/SQL
35
- IF vSquare(0)(10) = 0 THEN
51
+ IF vSquare(0)(10) = 0 THEN /* ここで型エラー TO_CHAR(0)でも同様 */
36
52
  /* 処理 */
37
53
  END IF;
38
54
  ```

1

見出しとリンクの修正

2019/12/19 15:40

投稿

teefpc
teefpc

スコア112

title CHANGED
@@ -1,1 +1,1 @@
1
- pl/sql の2次元配列の作り方について
1
+ PL/SQLの2次元配列の作り方について
body CHANGED
@@ -1,4 +1,4 @@
1
- pl/sql で、テーブルの型に合わせた2次元配列を作りたいのですが、
1
+ PL/SQL で、テーブルの型に合わせた2次元配列を作りたいのですが、
2
2
 
3
3
  普通、多次元配列の作り方は、
4
4
  ```PL/SQL
@@ -11,8 +11,9 @@
11
11
  ...
12
12
 
13
13
  ```
14
- 出典https://www.shift-the-oracle.com/plsql/collection/multi-dimension-array.html
14
+ [出典https://www.shift-the-oracle.com/plsql/collection/multi-dimension-array.html](https://www.shift-the-oracle.com/plsql/collection/multi-dimension-array.html)
15
15
 
16
+
16
17
  のように書きますが、ここで、データ型を、あるテーブルAと同じにしたいのです。
17
18
 
18
19
  やってみたことは、1行目を書き換えて、