尝试创建程序时出错,您认为这是为啥?

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”。

【讨论】:

以上是关于尝试创建程序时出错,您认为这是为啥?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的电影类在创建电影实例时遇到问题?

为啥我在执行 doInBackground() 时出错

为啥在ubuntu服务器的nod​​ejs中动态创建目录时出错?

在eclipse中调试php程序时出错

尝试构建默认 Android Studio 应用时出错

为啥当我推送我的应用程序时我的 cli 会出错? [复制]