【问题标题】:When I compile the package-procedure in oracle, i get error message ' success with compilation error' How to fix the problem?当我在 oracle 中编译包过程时,我收到错误消息“编译错误成功”如何解决这个问题?
【发布时间】:2019-01-18 13:06:27
【问题描述】:

我正在使用 Apex Oracle 在线工作区来完成我的最终数据库分配。我已经创建了一个表“志愿者”。现在我需要使用 pl-sql 过程语句将数据插入到表中。

当我尝试运行此代码时 -

CREATE OR REPLACE PACKAGE pkgVolunteer
AS PROCEDURE uspaddVolunteer(varvl_ID NUMBER, varvl_type NUMBER, 
    varName VARCHAR2, varAge NUMBER, varGenger VARCHAR2, 
    varBirthDateVARCHAR2, varPhone NUMBER, varEmail VARCHAR2,
    varFaculty VARCHAR2, varCourse VARCHAR2, varYear NUMBER,
    varcountry VARCHAR2, varCity VARCHAR2 varstreet VARCHAR2,
    varPostCode VARCHAR2);
END pkgVolunteer;
--
CREATE OR REPLACE PACKAGE BODY pkgVolunteer
AS PROCEDURE uspaddVolunteer(varvl_ID NUMBER, varvl_type NUMBER, varName 
    VARCHAR2, varAge NUMBER, varGenger VARCHAR2, varBirthDate VARCHAR2, 
    varPhone NUMBER, varEmail VARCHAR2, varFaculty VARCHAR2,
    varCourse VARCHAR2, varYear NUMBER, varcountry VARCHAR2,
    varCity VARCHAR2, varstreet VARCHAR2, varPostCode VARCHAR2)
IS 
BEGIN INSERT INTO  Volunteer(vl_id, vl_type, name, age, gender, birth_date, 
    phone, email, faculty, course, year,addr_country, addr_city, 
    addr_street, addr_postcode)
    VALUE(varvl_ID, varvl_type, varName, varAge, varGenger, vBirthDate, 
    varPhone, varEmail, varFaculty, varCourse, varYear, varcountry, 
    varCity, varstreet, varPostCode);
END uspaddVolunteer;
--
BEGIN pkgVolunteer.uspaddVolunteer('vl34322343', 1, 'Jack smith', 23 
    'Male','02/20/1994', 07400323321, 'jacksmith.example@gmail.com', '',
    'Bsc IT', 2, 'United Kingdom', 'London', '42 Hill street', 'EC329RU');
END;

我收到错误“ORA-24344:编译错误成功”。

这里还有创建表的sql语句-

CREATE TABLE volunteer
    (vl_id VARCHAR2(10) NOT NULL, vl_type NUMBER,
     name VARCHAR2(50), age NUMBER, gender VARCHAR2(6),
     birth_date VARCHAR2(10), phone NUMBER, email VARCHAR2(30),
     faculty VARCHAR2(50), course VARCHAR2(50), year NUMBER,
     addr_country VARCHAR2(30), addr_city VARCHAR2(50),
     addr_street VARCHAR2(50), addr_postcode VARCHAR2(7),

CONSTRAINT pk_volunteer PRIMARY KEY (vl_id));

我尝试检查语法错误,但找不到任何错误。有人可以帮我解决这个问题吗?

【问题讨论】:

  • 如果您的客户没有向您显示实际错误,请查询user_errors 视图以查看它们是什么。所有这些代码是作为一个执行还是单独执行?在大多数客户端中,您需要在每个 PL/SQL 部分之后的新行上添加一个斜杠 (/);但是您可能根本无法将它们作为一个脚本运行。 (不知道你在用什么......)
  • 插入查询中有一点很明显是错误的:它应该是 VALUES 而不是 VALUE
  • 一个更普遍的建议是,您可以考虑格式化您的代码,以便其他人(或您自己)在转移到其他内容时更容易维护它。

标签: sql oracle


【解决方案1】:

试试下面,检查我的 cmets:

CREATE OR REPLACE PACKAGE pkgVolunteer AS
  PROCEDURE uspaddVolunteer(varvl_ID NUMBER,
                            varvl_type NUMBER,
                            varName VARCHAR2,
                            varAge NUMBER,
                            varGenger VARCHAR2,
                            varBirthDate VARCHAR2,-- here needs space
                            varPhone NUMBER,
                            varEmail VARCHAR2,
                            varFaculty VARCHAR2,
                            varCourse VARCHAR2,
                            varYear NUMBER,
                            varcountry VARCHAR2,
                            varCity VARCHAR2 , --> needs comma
                                                        varstreet VARCHAR2,
                            varPostCode VARCHAR2);
END pkgVolunteer;
/
CREATE OR REPLACE PACKAGE BODY pkgVolunteer AS
PROCEDURE uspaddVolunteer(varvl_ID NUMBER, varvl_type NUMBER, varName VARCHAR2, varAge NUMBER, varGenger VARCHAR2, varBirthDate VARCHAR2, varPhone NUMBER, varEmail VARCHAR2, varFaculty VARCHAR2, varCourse VARCHAR2, varYear NUMBER, varcountry VARCHAR2, varCity VARCHAR2, varstreet VARCHAR2, varPostCode VARCHAR2) IS
BEGIN
INSERT INTO Volunteer
  (vl_id,
   vl_type,
   name,
   age,
   gender,
   birth_date,
   phone,
   email,
   faculty,
   course,
   year,
   addr_country,
   addr_city,
   addr_street,
   addr_postcode) VALUEs --> needs s 
  (varvl_ID,
   varvl_type,
   varName,
   varAge,
   varGenger,
   vBirthDate,
   varPhone,
   varEmail,
   varFaculty,
   varCourse,
   varYear,
   varcountry,
   varCity,
   varstreet,
   varPostCode);
END;
end; -- add another END;
/

【讨论】:

  • 感谢您的帮助。 pl-sql 语句运行良好,我的作业成功了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-15
  • 1970-01-01
  • 2018-03-19
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多