尝试创建程序时出错,您认为这是为啥?
Posted
技术标签:
【中文标题】尝试创建程序时出错,您认为这是为啥?【英文标题】:Error when trying to create procedure, why do you think that is?尝试创建程序时出错,您认为这是为什么? 【发布时间】:2016-12-08 14:17:56 【问题描述】:全部。
我尝试在 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;
【问题讨论】:
试试e := generate_password() ;
。
'ORA-24344: 编译错误成功' 我之前使用过没有 () 的函数,它可以工作。只是没有把程序放在一起。很奇怪。
请贴出实际的编译错误。
这就是你的意思>> ADD_USER PROCEDURE LINE 1 POSITION 42 PLS-00103:在期望以下之一时遇到符号“(”::=。),@%默认字符符号“ :=" 被替换为 "(" 以继续。
好的!!!不要定义过程的 varchar2 参数的长度。只需写VARCHAR2
不带大小。
【参考方案1】:
不要定义过程的 varchar2 参数的长度。只需写无大小的 VARCHAR2。
这是 PL/SQL 的语法。如果您考虑一下,这比定义从调用代码继承的缓冲区的长度更有意义。
【讨论】:
【参考方案2】:您正在尝试设置 varchar2 输入参数的最大长度 - 这不是有效的语法。
试试:
CREATE OR REPLACE PROCEDURE add_user (firstname in varchar2, lastname in varchar2, email in varchar2, area in varchar2, privileges in varchar2)
【讨论】:
【参考方案3】:伙计,你应该再读一遍 PLSQL 文档。
-
您不需要在存储过程中指定参数的长度。
Oracle 建议在子程序中使用引用参数,例如“p_empid employees.employee_id%TYPE”。
【讨论】:
以上是关于尝试创建程序时出错,您认为这是为啥?的主要内容,如果未能解决你的问题,请参考以下文章