2014-09-20 162 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

歡迎來到Stack Overflow。請儘快閱讀[關於]頁面。在寫一個標題時,請不要SHOUT。在寫問題時,請記得提問 - 不要將問題推斷出來。錯誤消息是否包含有關錯誤位置的任何額外位置信息?錯誤消息是否準確轉錄?不應該有與它相關的ORA ####錯誤號碼嗎? – 2014-09-20 03:38:45

+1

請注意,'email'和'hire_date'都是變量,顯然是列名 - 它們可能是你的一些麻煩的原因。 – 2014-09-20 03:40:17

回答

0

重命名參數電子郵件hire_date。 另外,將參數命名是相當方便的,因爲它是帶有附加前綴'p_'的相應列。你的情況:

  • 僱員標識 - > p_employee_id
  • FIRST_NAME - > p_first_name
  • ...
  • department_id-> p_department_id。

如果聲明本地變量,則可以使用'v_'前綴。