首页 文章

手动创建搜索栏,无需交互式报告 . (Oracle APEX)

提问于
浏览
1

我试图完全手动创建一个应用程序,而不使用任何交互式报告或生成PL / SQL . 目前一切正常,但是当我遇到搜索栏时我感到很难过,我在网上找不到任何帮助我的东西 .

我有一个名为“浏览职位空缺”的经典报告和一个“搜索”按钮;我还有'C1_JOB_TITLE_ITEM'搜索栏和一个名为'Search'的页面进程 .

在这个过程中我有这个代码:

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 回答

  • 2

    1)使用该SQL作为源代码创建经典报告 .

    2)在Page Items To Submit属性中设置C1_JOB_TITLE_ITEM,就在区域源下 .

    3)创建页面项C1_JOB_TITLE_ITEM,作为搜索字段 .

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

    你在upper(job_title)上有一个基于函数的索引吗?否则您可能会遇到性能问题 .

  • 1

    (编辑,因为有人认为这不是一个答案 . )

    你说你有一个页面进程 . 您不需要任何类型的过程 . 你应该有一个具有以下属性的Region(假设为18.x):

    • Type =经典报告

    • 来源>位置=本地数据库

    • Source> Type = SQL查询

    • Source> SQL Query>您上面第一个块中的查询

    Apex将运行查询并基于它创建报告 . 进程适用于PL / SQL块,它们可以以某种方式填充数据或操作数据库 .

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

相关问题