Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle过程的编译错误_Oracle_Plsql_Sqlplus - Fatal编程技术网

Oracle过程的编译错误

Oracle过程的编译错误,oracle,plsql,sqlplus,Oracle,Plsql,Sqlplus,我在脚本中有以下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, l

我在脚本中有以下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)

让参数名称与任何表列匹配不是一个好主意(在本例中,
email
job
);在参数前加前缀是常见的,例如使用
p_电子邮件
p_作业
;但应该始终如一地这样做。即使在名称不冲突的情况下,也可以更容易地遵循代码-您知道变量的来源及其作用域。

您不能在过程声明中指定字符串的大小,因此它应该是:

create or replace procedure add_employee 
(fname IN varchar2, lname IN varchar2, email IN varchar2, job IN varchar2)
让参数名称与任何表列匹配不是一个好主意(在本例中,
email
job
);在参数前加前缀是常见的,例如使用
p_电子邮件
p_作业
;但应该始终如一地这样做。即使名称不冲突,它通常也会使遵循代码变得更容易-您知道变量来自何处以及它的作用域是什么