2014-09-20 3 views
-1

Я написал эту хранимую процедуру:Ошибка при компиляции Oracle хранимой процедуры

CREATE OR REPLACE PROCEDURE ADD_EMPLOYEE 
(
    F_FNAME IN VARCHAR2 
, L_NAME IN VARCHAR2 
, EMAIL IN VARCHAR2 
, jobid IN VARCHAR2 DEFAULT 'SA_REP' 
, MGR IN employees.manager_id%type DEFAULT 145 
, SAL IN employees.salary%type DEFAULT 1000 
, COMM IN EMPLOYEES.COMMISSION_PCT%type DEFAULT 0 
, DEPTID IN VARCHAR2 DEFAULT 30 
, HIRE_DATE IN DATE 
) 
AS 
BEGIN 
insert into EMPLOYEES(employee_id,first_name,last_name,email,hire_date,salary,commission_pct,manager_id,department_id) 
values 
(employees_seq.nextval,f_name,l_name,email,HIRE_DATE,sal,comm,mgr,deptid); 

END ADD_EMPLOYEE; 

Он выдает сообщение

sql statement ignored. 
columns not allowed here. 

Что случилось с ним?

+0

Добро пожаловать в переполнение стека. Вскоре прочитайте страницу [О программе]. При написании названия, пожалуйста, не используйте SHOUT. И при написании вопроса, пожалуйста, не забудьте задать вопрос - не оставляйте вопрос, чтобы быть выведенным. Включает ли сообщение об ошибке дополнительную информацию о том, где ошибка? Является ли сообщение об ошибке транскрибированным точно? Должен ли быть номер ошибки ORA ####, связанный с ним? –

+1

Обратите внимание, что 'email' и' hire_date' являются и переменными, и, по-видимому, именами столбцов - они могут быть причиной некоторых из ваших проблем. –

ответ

0

Переименование параметров email и hire_date. Кроме того, удобно указывать параметры как соответствующие столбцы с дополнительным префиксом «p_». В вашем случае:

  • employee_id -> p_employee_id
  • first_name -> p_first_name
  • ...
  • department_id-> p_department_id.

Если вы указали локальную переменную, вы можете использовать префикс 'v_'.