您好,我有一个oracle数据库,我正在尝试添加一个过程来根据输入选择驱动程序,但是我收到了这个错误消息
ORA-06502 numeric or value error
ORA-06512: at line 9
create or replace
PROCEDURE "SELECTDRIVE"
(LicenseNumber in number, FirstNamee out VARCHAR2, LastNamee out VARCHAR2, ContactNumberr out NUMBER)
as
begin
select d.firstname, d.lastname, d.contactnumber
into FirstNamee , LastNamee , ContactNumberr
from Driver d
where d.license = LicenseNumber;
end;下面是它从中选择的表
LICENSE NUMBER(10,0)
FIRSTNAME VARCHAR2(15 BYTE)
LASTNAME VARCHAR2(15 BYTE)
PHOTO BLOB
CONTACTNUMBER NUMBER(11,0)

有什么想法吗?谢谢
发布于 2018-04-30 04:37:28
请确保入参LicenseNumber的值不超过(10,0)的精度。据我所知,你得到的错误是在调用过程时,而不是在创建它的时候。在数据库端捕获传入参数的值。
发布于 2018-04-30 04:26:37
哪一行是第9行?
这段代码没有任何错误,至少在我尝试它的时候是这样:
SQL> create table driver (
2 LICENSE NUMBER(10,0),
3 FIRSTNAME VARCHAR2(15 BYTE),
4 LASTNAME VARCHAR2(15 BYTE),
5 PHOTO BLOB,
6 CONTACTNUMBER NUMBER(11,0));
Table created.
SQL> insert into driver (license, firstname, lastname, contactnumber)
2 values (1, 'Little', 'Foot', 1234);
1 row created.
SQL> create or replace PROCEDURE SELECTDRIVE
2 (LicenseNumber in number,
3 FirstNamee out VARCHAR2,
4 LastNamee out VARCHAR2,
5 ContactNumberr out NUMBER)
6 as
7 begin
8 select d.firstname, d.lastname, d.contactnumber
9 into FirstNamee , LastNamee , ContactNumberr
10 from Driver d
11 where d.license = LicenseNumber;
12 end;
13 /
Procedure created.
SQL> declare
2 l_fn driver.firstname%type;
3 l_ln driver.lastname%type;
4 l_cn driver.contactnumber%type;
5 begin
6 selectdrive(1, l_fn, l_ln, l_cn);
7 end;
8 /
PL/SQL procedure successfully completed.
SQL>请复制/粘贴您的SQL*Plus会话,以便我们可以查看发生的情况。
https://stackoverflow.com/questions/50090915
复制相似问题