Oracle 过程的编译错误

Compile Error for Oracle Procedure

我在脚本中有以下 PL/SQL 代码,我正在尝试 运行 它 SQL*Plus:

create or replace procedure add_employee 
(fname IN varchar2(20), lname IN varchar2(25), email IN varchar2(25), job IN varchar2(25))
AS
eid INTEGER := 300;
BEGIN
    insert into Employees (employee_id, first_name, last_name, email, hire_date, job_id) 
    values (eid, fname, lname, email, job);
END add_employee;
/

我收到以下错误:

Errors for PROCEDURE ADD_EMPLOYEE:

LINE/COL
---------------------------------------------------------------------------
ERROR
---------------------------------------------------------------------------

1/42
PLS-00103: Encountered the symbol "(" when expecting one of the following:

   := . ) , @ % default character
The symbol ":=" was substituted for "(" to continue.

我不明白这是什么问题。我已经编写了其他程序,其中左括号跟在程序名称后面没有任何问题。

过程声明中不能指定字符串的大小,所以应该是:

create or replace procedure add_employee 
(fname IN varchar2, lname IN varchar2, email IN varchar2, job IN varchar2)

让参数名称匹配任何 table 列(在本例中为 emailjob)不是一个好主意;给参数加上前缀很常见,例如使用 p_emailp_job;但应该始终如一地完成。即使名称不冲突,它通常也可以更轻松地遵循代码 - 您知道变量来自哪里以及它的范围是什么。