首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle Apex: ORA-24344成功,出现编译错误

Oracle Apex: ORA-24344成功,出现编译错误
EN

Stack Overflow用户
提问于 2015-11-02 02:23:23
回答 1查看 13.5K关注 0票数 0

我目前在APEX的oracle数据库上工作。

首先,我没有访问任何工具的权限。我只能使用apex.oracle.com中提供的内容,并且在上传脚本之前,我正在用NotePad++编写脚本。这是一项学校作业,所以我不允许使用任何其他工具,即使有一些东西可以让事情变得更容易。

我正在创建一个很长的脚本,它在数据库中创建一组表,在每个表中创建一组记录,并创建所有约束。这部分运行得很好。现在,我必须在相同的脚本中创建几个函数和过程,在其他东西之后。

每次我尝试创建一个ORA时,我都会得到这样的结果: ORA-24344:成功,出现编译错误

此外,此错误后脚本中的其他指令也不会执行。错误发生前的所有工作都很正常。

以下是导致此错误的函数之一:

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION SP_03Recherche (titre_art VARCHAR2, nom_aut VARCHAR2, type_art VARCHAR2)
RETURN CURSOR
IS
    CURSOR articles (p_titre_art VARCHAR2, p_nom_aut VARCHAR2, p_type_art VARCHAR2) IS
    SELECT * FROM BI_Articles INNER JOIN (BI_ArticlesAuteurs INNER JOIN BI_Auteurs ON BI_ArticlesAuteurs.AuteurID = BI_Auteurs.AuteurID) ON BI_Articles.ISBN = BI_ArticlesAuteurs.ISBN
    WHERE (Titre LIKE p_titre_art) AND ((Nom LIKE p_nom_aut) OR (Prenom LIKE p_nom_aut)) AND TypeArticle LIKE type_art;
BEGIN
    RETURN articles(titre_art, nom_aut, type_art);
END;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-02 08:27:50

sys_refcursor是您似乎想要返回的数据类型。这是弱引用游标的泛型类型。我猜你想要像这样的东西

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION SP_03Recherche (
  p_titre_art VARCHAR2, 
  p_nom_aut VARCHAR2, 
  p_type_art VARCHAR2
)
  RETURN sys_refcursor;
IS
  l_rc sys_refcursor;
BEGIN
  OPEN l_rc
   FOR select *
         from bi_articles art
              inner join BI_ArticlesAuteurs art_auth
                 on (art.isbn = art_auth.isbn)
              inner join BI_Auteurs auth
                 on (art_auth.auteurID = auth.auteurID)
        where titre LIKE p_titre_art
          and (nom LIKE p_nom_auth or
               prenum LIKE p_nom_auth)
          and typearticle LIKE type_art;

  RETURN l_rc;
END;

现在,我有几点建议

  • 做一个select *几乎总是一个坏主意。尤其是当您连接多个表时。您真的、真的希望每当有人向三个表中的任何一个添加额外的列时,结果集的结构都会改变吗?这似乎不太可能。
  • 到处都使用别名。查看代码,我不知道titre来自哪个表。或者nomprenumtypearticle。使用别名来标识列来自哪个表。这将使您的代码更加清晰,并且在将来添加可能具有相同列名的其他表或列时更加健壮(例如,多个实体可能具有nom列)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33465591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档