У меня есть таблица с именем телефонная книга, и она имеет два столбца (firstName, LastName)
.Я хочу создать таблицу индекса lastName по имени firstName с помощью курсора, и я написал этот код:
CREATE OR REPLACE PROCEDURE proc1 AS
TYPE tableNames IS TABLE OF VARCHAR2(20) INDEX BY VARCHAR(20);
v1 tableNames;
v_firstName PHONEBOOK.FIRSTNAME%TYPE;
v_lastName PHONEBOOK.LASTNAME%TYPE;
CURSOR c_name IS SELECT FIRSTNAME, LASTNAME FROM PHONEBOOK;
BEGIN
OPEN c_name;
LOOP
FETCH c_name INTO v_firstName, v_lastName;
EXIT WHEN c_name%NOTFOUND;
v1(v_firstName) := v_lastName;
END LOOP;
FOR idx IN v1.FIRST..v1.LAST
LOOP
DBMS_OUTPUT.PUT_LINE (v1(idx));
END LOOP;
CLOSE c_name;
END;
/
Он был успешно скомпилирован.Когда я запускаю эту процедуру, она должна напечатать lastNames, которые хранятся в tableNames, но выдает ошибку:
ORA-06502 "PL / SQL: ошибка числа или значения"
Причина: Произошла арифметическая, числовая, строковая ошибка, ошибка преобразования или ограничения.Например, эта ошибка возникает, если предпринята попытка присвоить значение NULL переменной, объявленной NOT NULL, или если предпринята попытка присвоить целое число больше 99 переменной, объявленной NUMBER (2).
Действие: Изменить данные, каким образом они манипулируют или как они объявлены, чтобы значения не нарушали ограничений.
Пожалуйста, помогите мне решить эту проблему