在没有交互式报告的情况下手动制作搜索栏。 (Oracle APEX)

时间:2018-12-09 21:47:19

标签: oracle oracle-sqldeveloper oracle-apex

我正在尝试完全手动制作一个应用程序,而不使用任何交互式报告或生成的PL / SQL。目前一切正常,但是在搜索栏上我却迷住了,找不到任何在线帮助我。

我有一个经典的报告,称为“浏览职位空缺”和一个“搜索”按钮;我也有“ C1_JOB_TITLE_ITEM”搜索栏和一个名为“搜索”的页面处理。

在此过程中,我有以下代码:

SELECT 
    JOB_CODE, 
    JOB_TITLE, 
    JOB_DESCRIPTION, 
    SITE_NAME, 
    EMAIL_ADDRESS, 
    TELEPHONE_NUMBER, 
    SALARY, 
    START_OF_PLACEMENT, 
    APPLICATION_METHOD, 
    APPLICATION_CLOSING_DATE
FROM JOB
WHERE upper(job_title) = upper(:C1_JOB_TITLE_ITEM);

我收到此错误:

  

ORA-06550:第1行,第64列:PLS-00428:此SELECT语句中应有一个INTO子句

所以我创建了以下代码:

DECLARE temp_row char;
BEGIN
    SELECT 
        JOB_CODE, 
        JOB_TITLE, 
        JOB_DESCRIPTION, 
        SITE_NAME, 
        EMAIL_ADDRESS, 
        TELEPHONE_NUMBER, 
        SALARY, 
        START_OF_PLACEMENT, 
        APPLICATION_METHOD, 
        APPLICATION_CLOSING_DATE
    INTO temp_row
    FROM JOB
    WHERE job_title = :C1_JOB_TITLE_ITEM;
END;

我在这里遇到此错误:

  

ORA-06550:第13行,第16列:PL / SQL:ORA-00947:值不足

在这一点上,我完全不知所措,因此,我们将不胜感激。抱歉,如果我不够详细,这是我第一次写Stack Overflow。

2 个答案:

答案 0 :(得分:2)

(编辑是因为有人认为这不是答案。)

您说您有一个分页过程。您不需要任何处理。您应该拥有一个具有以下属性的Region(假设18.x):

  1. 类型=经典报表
  2. 源>位置=本地数据库
  3. 源>类型= SQL查询
  4. 源代码> SQL查询>您在上方第一个块中的查询

Apex将运行查询并基于该查询创建报告。进程用于PL / SQL块,以某种方式执行诸如填充数据或操作数据库的操作。

当您在项目中输入关键字并单击按钮(按钮操作应为Submit Page)时,Apex将在会话状态下用用户的值填充C1_JOB_TITLE_ITEM,然后在其绑定变量中使用它重新生成页面。

答案 1 :(得分:1)

1)创建一个以该SQL作为源代码的经典报告。

2)在区域源下方的要提交的页面项属性中设置C1_JOB_TITLE_ITEM。

3)创建页面项C1_JOB_TITLE_ITEM,作为您的搜索字段。

4)创建该项目的“更改时的动态操作”,并刷新经典报表区域。刷新的时间取决于您。步骤2确保将您在浏览器中键入的值发送到数据库,以重新运行该查询。

您是否有基于函数的基于上标(job_title)的索引?否则,您可能会遇到性能问题。