Plsql 显示错误';ORA-01858:在需要数字的位置找到非数字字符';在这个命令中

Plsql 显示错误';ORA-01858:在需要数字的位置找到非数字字符';在这个命令中,plsql,Plsql,这是我的密码 Create OR Replace Procedure new_prof ( Pno IN VARCHAR2, ProLast_Name IN VARCHAR2, ProFirst_Name IN VARCHAR2, Pro_rank IN VARCHAR2, ProResearch_Specialty IN VARCHAR2, Pro_DOB IN DATE, Time_percentage DECIMAL ) IS BEGIN INSERT INTO professors V

这是我的密码

Create OR Replace Procedure new_prof 
(
Pno IN VARCHAR2,
ProLast_Name IN VARCHAR2,
ProFirst_Name IN VARCHAR2,
Pro_rank IN VARCHAR2,
ProResearch_Specialty IN VARCHAR2,
Pro_DOB IN DATE,
Time_percentage DECIMAL
)
IS
BEGIN
INSERT INTO professors VALUES(Pno,ProLast_Name,ProFirst_Name,Pro_DOB,Pro_rank,ProResearch_Specialty,Time_percentage);
DBMS_OUTPUT.PUT_LINE('New Professors'||Pno||'is successfully created');

END;
/
当我执行代码时

执行新教授('P0026','罗纳尔多','克里斯蒂亚诺','1978年7月25日','MM/DD/YYYY'),'Senior','Programming',0.40)


执行此代码后,它会显示“在预期的数字位置找到了非数字字符”的日期。

您以错误的顺序传递参数

为了避免这样的问题,最好显式地传递参数,而不是依赖于它们的顺序

例如:

begin
    new_prof( Pno => 'P0026',
              ProLast_Name => 'Ronaldo',
              ProFirst_Name => 'Christiano',
              Pro_rank => 'Senior',
              ProResearch_Specialty => 'Programming',
              Pro_DOB => TO_DATE('07/25/1978','MM/DD/YYYY'),
              Time_percentage => 0.40
             );
end;

您在过程中错误地传递了值,日期是第6个参数,但您作为第4个参数传递