2016-12-08 5 views
0

プロシージャを作成しようとしたときにエラーが発生しましたが、それはなぜだと思いますか?

Oracle Apex 5でプロシージャを作成しようとしましたが、この問題は「ORA-24344:コンパイルエラーで成功しました」というメッセージが表示されます。私はそれが構文エラーであると仮定します。それは何だと思いますか? * generate_passwordは、ランダムな16進値/文字列を生成する作業関数です。

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

Dude、もう一度PLSQLのドキュメントを読む必要があります。

  1. ストアドプロシージャでパラメータの長さを指定する必要はありません。
  2. 「p_empid employees.employee_id%TYPE」のように、サブプログラム内で参照パラメータを使用することをお薦めします。
関連する問題