我试图完全手动创建一个应用程序,而不使用任何交互式报告或生成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 回答
1)使用该SQL作为源代码创建经典报告 .
2)在Page Items To Submit属性中设置C1_JOB_TITLE_ITEM,就在区域源下 .
3)创建页面项C1_JOB_TITLE_ITEM,作为搜索字段 .
4)在更改该项目时创建动态操作,并刷新您的经典报告区域 . 刷新的时间取决于您 . 步骤2确保您在浏览器中键入的值被发送到数据库,以便重新运行该查询 .
你在upper(job_title)上有一个基于函数的索引吗?否则您可能会遇到性能问题 .
(编辑,因为有人认为这不是一个答案 . )
你说你有一个页面进程 . 您不需要任何类型的过程 . 你应该有一个具有以下属性的Region(假设为18.x):
Type =经典报告
来源>位置=本地数据库
Source> Type = SQL查询
Source> SQL Query>您上面第一个块中的查询
Apex将运行查询并基于它创建报告 . 进程适用于PL / SQL块,它们可以以某种方式填充数据或操作数据库 .
当您在项目中输入关键字并单击按钮(按钮操作应为提交页面)时,Apex将使用用户的值填充会话状态的
C1_JOB_TITLE_ITEM
,然后在重新生成页面时在绑定变量中使用该值 .