2016-12-08 42 views
0

全部。嘗試創建過程時出錯,爲什麼你認爲這是?

我試過在Oracle Apex 5中創建一個過程。但是,我得到這個問題'ORA-24344:成功與編譯錯誤'。我認爲這是一個語法錯誤。你覺得它是什麼? * generate_password是一個工作函數,它產生一個隨機的十六進制值/字符串。

CREATE OR REPLACE PROCEDURE add_user (firstname in varchar2(20), lastname in varchar2(20), email in varchar2(100), area in varchar2(50), privileges in varchar2(2)) 
AS 
e varchar2(100); 
BEGIN 

e := generate_password; 

insert into user_login (user_name, first_name, last_name, creation_date, last_update_date, user_privileges, user_pwd) 

values (email, firstname, lastname, SYSDATE, SYSDATE, privileges , e); 

END add_user; 
+1

嘗試'e:= generate_password();'。 – FDavidov

+0

'ORA-24344:編譯錯誤成功'我以前沒有使用該函數(),它的工作原理。只是不是所有的程序都在一起。很奇怪。 –

+0

請發佈實際的編譯錯誤。 –

回答

2

不要定義過程的VARCHAR2參數的長度。只需編寫VARCHAR2而不需要大小。

這是PL/SQL的語法。如果你仔細想想,比定義從調用代碼繼承的緩衝區的長度更有意義。

0

您正試圖設置varchar2輸入參數的最大長度 - 這不是有效的語法。

嘗試:

CREATE OR REPLACE PROCEDURE add_user (firstname in varchar2, lastname in varchar2, email in varchar2, area in varchar2, privileges in varchar2) 
0

老兄,您應該多閱讀一次PLSQL文檔。

  1. 您不需要在存儲過程中指定參數長度。
  2. Oracle建議在子程序中使用引用參數如「p_empid employees.employee_id%TYPE」。
相關問題