我有一个表调用 OUTGOING ,其中有很多字段,但是在这种情况下要填充的字段是:
现在我有一个使用sql的报告
SELECT APEX_ITEM.CHECKBOX2(1,registry.filenumber) "Select",
INCOMINGREQUESTNOTIFICATION.REQUESTEDFILE as REQUESTEDFILE,
INCOMINGREQUESTNOTIFICATION.FILENUMBER as FILENUMBER,
INCOMINGREQUESTNOTIFICATION.REQUESTEDDEPARTMENT as REQUESTEDDEPARTMENT,
INCOMINGREQUESTNOTIFICATION.REQUESTDATE as REQUESTDATE,
REGISTRY.STATUS as STATUS
from REGISTRY REGISTRY,
INCOMINGREQUESTNOTIFICATION INCOMINGREQUESTNOTIFICATION
where REGISTRY.FILENUMBER(+) =INCOMINGREQUESTNOTIFICATION .FILENUMBER
and INCOMINGREQUESTNOTIFICATION.STATUS ='PENDING'
这很好..我需要的是
将在课程的相关名称下插入到传出表中。
我有一个pl / sql
DECLARE
L_FILENUMBER WWV_FLOW_GLOBAL.VC_ARR2;
BEGIN
L_FILENUMBER := APEX_APPLICATION.G_F01;
FOR IDX IN 1 .. L_FILENUMBER.COUNT
LOOP
IF L_FILENUMBER(IDX) IS NOT NULL THEN
INSERT INTO OUTGOING
(FILENUMBER,OUTGOINGDATE,DEPARTMENT)
VALUES
((to_number(APEX_APPLICATION.G_F01(1)))
,SYSDATE
,to_char(APEX_APPLICATION.G_F02(2)) )
;
END IF;
END LOOP;
END;
这是行不通的。但是,如果我只留下文件号
DECLARE
L_FILENUMBER WWV_FLOW_GLOBAL.VC_ARR2;
BEGIN
L_FILENUMBER := APEX_APPLICATION.G_F01;
FOR IDX IN 1 .. L_FILENUMBER.COUNT
LOOP
IF L_FILENUMBER(IDX) IS NOT NULL THEN
INSERT INTO OUTGOING
(FILENUMBER)
VALUES
((to_number(APEX_APPLICATION.G_F01(1)))
;
END IF;
END LOOP;
END;
仅插入文件编号fine。全部通过提交按钮完成。
NB:我也尝试将离职日期和部门放入声明语句中,但仍然不起作用
答案 0 :(得分:0)
我建议您学习如何使用表别名。您写的SELECT
由于表名和列名很长而难以阅读;别名肯定会有所帮助。
关于您的问题:说“它不起作用”根本没有帮助。到底什么不起作用?有什么错误吗?如果是这样,哪一个?您是否以调试模式运行页面并检查发生了什么?如果没有,那就这样做。
除此之外,您编写的代码没有多大意义-您正试图再次插入相同的值。例如。 APEX_APPLICATION.G_F01(1)
不应该是APEX_APPLICATION.G_F01(IDX)
吗?像这样:
begin
for idx in 1 .. apex_application.g_f01.count
loop
if apex_application.g_f01(idx) is not null then
insert into outgoing
(filenumber,
outgoingdate,
department
)
values
(apex_application.g_f01(idx),
sysdate,
apex_application.g_f02(idx)
);
end if;
end loop;
end;
(通过检查页面)检查(表格形式)项目是否真的是您使用过的项目(G_F01
和G_F02
)。如果没有,则必须修复该问题。
我没有使用任何TO_NUMBER
或TO_CHAR
函数;我不知道您是否真的需要它们。即使您没有它们,Oracle也会在可能的情况下执行隐式数据类型转换,但是如果您尝试放置例如将'abc123'转换为NUMBER
数据类型列。您没有分享这些信息,所以-我省略了这些信息。如有必要,应用它们。