2016-12-08 17 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”。
相关问题