我在脚本中有以下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.
我不明白这是什么问题。我已经编写了其他过程,其中左括号遵循过程名称没有任何问题。
答案 0 :(得分:4)
您无法在过程声明中指定字符串的大小,因此它应该是:
create or replace procedure add_employee
(fname IN varchar2, lname IN varchar2, email IN varchar2, job IN varchar2)
让参数名称与任何表格列匹配不是一个好主意(在这种情况下为email
和job
);为参数添加前缀是常见的,例如,使用p_email
和p_job
;但应该始终如一地进行。即使名称没有发生冲突,通常也可以更容易地遵循代码 - 您知道变量的来源以及范围是什么。