Oracle 过程的编译错误
Posted
技术标签:
【中文标题】Oracle 过程的编译错误【英文标题】:Compile Error for Oracle Procedure 【发布时间】:2015-06-29 17:35:18 【问题描述】:我在脚本中有以下 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.
我不明白问题是什么。我已经编写了其他程序,其中左括号跟在程序名称之后,没有任何问题。
【问题讨论】:
【参考方案1】:你不能在过程声明中指定字符串的大小,所以应该是:
create or replace procedure add_employee
(fname IN varchar2, lname IN varchar2, email IN varchar2, job IN varchar2)
让参数名称匹配任何表列(在这种情况下为email
和job
)不是一个好主意;为参数添加前缀很常见,例如使用p_email
和p_job
;但应该始终如一地完成。即使名称不冲突,它通常也可以更容易地遵循代码 - 您知道变量来自哪里以及它的范围是什么。
【讨论】:
以上是关于Oracle 过程的编译错误的主要内容,如果未能解决你的问题,请参考以下文章