PL / SQL двумерный массив - не могу добраться до пункта 2 - PullRequest
0 голосов
/ 07 ноября 2011

В следующем примере кода,

Type single_table_purge_type is varray(2) of varchar2(255);
Type single_table_list is table of single_table_purge_type; 

purge_table single_table_list;

purge_table := new single_table_list(
            new single_table_purge_type('product','Where product_id=5'),
            new single_table_purge_type('customer','Where customer_id=10')
);

For x in 1..purge_table.Count
        Loop
            For y in 1..purge_table(x).Count
            Loop
                DBMS_OUTPUT.put_line( 'x='||x||' y='||y||' cell='||purge_table(x)(y));
            End loop;
        End loop;

DBMS_OUTPUT.put_line( 'm1 ' || purge_table(1)(1));
DBMS_OUTPUT.put_line( 'm2 ' || purge_table(1)(2));
DBMS_OUTPUT.put_line( 'm3 ' || purge_table(2)(1));
DBMS_OUTPUT.put_line( 'm4 ' || purge_table(2)(2));

Как мне добраться до предметов (1,2) или (2,2)? (т. е. предложения where). Все, что я вижу, это дубликат первого элемента, когда я распечатываю значения.

выход

m1 product
m2 product
m3 customer
m4 customer

1 Ответ

1 голос
/ 08 ноября 2011

Запустив ваш код, как показано (добавив declare, begin и end), я получаю следующее в Oracle 10g:

x=1 y=1 cell=product
x=1 y=2 cell=Where product_id=5
x=2 y=1 cell=customer
x=2 y=2 cell=Where customer_id=10
m1 product
m2 Where product_id=5
m3 customer
m4 Where customer_id=10

Это наводит меня на мысль, что что-то не так в том, как вы собираете кусочки, которые вы нам показали. Пожалуйста, отредактируйте ваш вопрос так, чтобы скрипт был в точности таким, как вы его запускаете.

(Это действительно должен быть комментарий, но он требует длины и форматирования, которые здесь не подходят).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...