好的,所以,这是代码
DECLARE
v_remessa_id NUMBER;
v_count NUMBER;
v_nm_remessa VARCHAR2(50);
BEGIN
SELECT COUNT(*) + 1 INTO v_count FROM TB_REMESSA;
v_nm_remessa := 'REMESSA ' || v_count;
INSERT INTO TB_REMESSA (NM_REMESSA, REGISTRO_REMESSA, STATUS, LOCAL_ENTREGA)
VALUES (v_nm_remessa, SYSDATE, 1, :P3_SELECT_LOCAL_ENTREGA)
RETURN REMESSA_ID INTO v_remessa_id;
FOR C_ACEITOS IN (
SELECT
tbsol.SOLICITACAO_ID,
NM_SOLICITACAO,
tpsol.TIPO_SOLICITACAO,
tprol.PROTOCOLO,
REGISTRO,
locrec.LOCAL_RECEBIMENTO
FROM TB_SOLICITACAO tbsol
INNER JOIN
TB_TIPO_SOLICITACAO tpsol ON tbsol.TIPO_SOLICITACAO_ID = tpsol.TIPO_SOLICITACAO_ID
INNER JOIN
TB_PROTOCOLO tprol ON tbsol.PROTOCOLO_ID = tprol.PROTOCOLO_ID
INNER JOIN
TB_STATUS_SOLICITACAO stsol ON tbsol.STATUS_ID = stsol.STATUS_ID
INNER JOIN
TB_LOCAL_RECEBIMENTO locrec ON tbsol.LOCAL_RECEBIMENTO = locrec.LOCAL_RECEBIMENTO_ID
WHERE
stsol.STATUS_ID = 2
AND
locrec.LOCAL_RECEBIMENTO = :P3_SELECT_LOCAL_ENTREGA
)
LOOP
INSERT INTO TB_SOLICITACAO_REMESSA (SOLICITACAO_ID, REMESSA_ID)
VALUES (C_ACEITOS.SOLICITACAO_ID, v_remessa_id);
END LOOP;
END;
问题是,LOOP部分不起作用,它没有插入到表中,我已经尝试了很多东西,但找不到问题
调试它没有给我任何信息。完全没有错误,我找不到。
基本调试 - 这可能非常令人沮丧,但作为开发人员,您必须仔细检查自己编写的内容,并且很容易忽略基本错误。我们无法为您调试此问题,因为我们无权访问您的代码。首先向您的代码添加 APEX_DEBUG 调用。当您在调试中运行页面时可以查看这些内容。
可能的原因是
首先验证循环是否有迭代,例如使用如下所示的一些语句。
DECLARE
v_remessa_id NUMBER;
v_count NUMBER;
v_nm_remessa VARCHAR2(50);
BEGIN
apex_debug.info( p_message => 'Process: Start');
SELECT COUNT(*) + 1 INTO v_count FROM TB_REMESSA;
v_nm_remessa := 'REMESSA ' || v_count;
INSERT INTO TB_REMESSA (NM_REMESSA, REGISTRO_REMESSA, STATUS, LOCAL_ENTREGA)
VALUES (v_nm_remessa, SYSDATE, 1, :P3_SELECT_LOCAL_ENTREGA)
RETURN REMESSA_ID INTO v_remessa_id;
FOR C_ACEITOS IN (
SELECT
tbsol.SOLICITACAO_ID,
NM_SOLICITACAO,
tpsol.TIPO_SOLICITACAO,
tprol.PROTOCOLO,
REGISTRO,
locrec.LOCAL_RECEBIMENTO
FROM TB_SOLICITACAO tbsol
INNER JOIN
TB_TIPO_SOLICITACAO tpsol ON tbsol.TIPO_SOLICITACAO_ID = tpsol.TIPO_SOLICITACAO_ID
INNER JOIN
TB_PROTOCOLO tprol ON tbsol.PROTOCOLO_ID = tprol.PROTOCOLO_ID
INNER JOIN
TB_STATUS_SOLICITACAO stsol ON tbsol.STATUS_ID = stsol.STATUS_ID
INNER JOIN
TB_LOCAL_RECEBIMENTO locrec ON tbsol.LOCAL_RECEBIMENTO = locrec.LOCAL_RECEBIMENTO_ID
WHERE
stsol.STATUS_ID = 2
AND
locrec.LOCAL_RECEBIMENTO = :P3_SELECT_LOCAL_ENTREGA
)
LOOP
apex_debug.info( p_message => 'Process: In Loop');
INSERT INTO TB_SOLICITACAO_REMESSA (SOLICITACAO_ID, REMESSA_ID)
VALUES (C_ACEITOS.SOLICITACAO_ID, v_remessa_id);
END LOOP;
apex_debug.info( p_message => 'Process: Start');
END;
在调试中运行页面,检查发生了什么,然后继续调试。