我有一张叫电话簿的表,它有两列(firstName, LastName)
。我想使用游标按 firstName 创建一个 lastName 索引表,我编写了以下代码:
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;
/
它已成功编译。当我运行此过程时,它应该打印存储在 tableNames 中的 lastNames 但它给了我一个错误:
ORA-06502“PL/SQL:数字或值错误”
原因: 发生算术、数字、字符串、转换或约束错误。例如,如果尝试将值 NULL 分配给声明为 NOT NULL 的变量,或者尝试将大于 99 的整数分配给声明为 NUMBER(2) 的变量,则会发生此错误。
行动: 改变数据,它是如何被操纵的,或者它是如何被声明的,这样值就不会违反约束。
请帮我解决这个问题