1
resposta

Como atribuir o resultado de uma query a uma variável declarada dentro de um for

Como atribuir o resultado de uma query a uma variável declarada dentro de um for Ex.:

DECLARE 
    CURSOR cur_ctrl_serie IS SELECT CTRL.ESTADO_ID AS ESTADO_ID, ES.CVEESTADO AS CVEESTADO, CTRL.EMPRESA_ID AS EMPRESA_ID , MAX(CTRL.SERIE) AS SERIE  FROM CTRL_SERIE_EMBARCADA CTRL, ESTADO ES WHERE CTRL.ACTIVO = 1 AND ES.ESTADO_ID =CTRL.ESTADO_ID GROUP BY CTRL.ESTADO_ID,  ES.CVEESTADO, CTRL.EMPRESA_ID ORDER BY CTRL.ESTADO_ID, CTRL.EMPRESA_ID; 
BEGIN
    FOR linha IN cur_ctrl_serie LOOP 
        DECLARE
            NUMSERIE CTRL_SERIE_bpe%type;
        BEGIN
        --Aqui da erro
            NUMSERIE:= SELECT NUMSERIE  FROM CTRL_SERIE_BPE WHERE ACTIVO = 1 AND ESTADO_ID=linha.EMPRESA_ID and EMPRESA_ID=linha.EMPRESA_ID)> linha.SERIE;
            IF (NUMSERIE > linha.SERIE ) THEN 
                dbms_output.put_line ('SERIE EMBARCADA MAIOR QUE SRIE BPE'); 
            ELSE
                dbms_output.put_line('SERIE EMBARCADA NÃO MAIOR QUE SRIE BPE');
            END IF;

        END;
    END LOOP;
END;
1 resposta

Olá Valdevir, tudo bem?

Você poderia fornecer mais detalhes ? Assim, poderei ti ajudar de forma mais objetiva.

  • Por que você está utilizando duas cláusulas BEGIN?
  • Por que a variável NUMSERIE, não foi declarada junto com o curso, logo no início do código?

Neste trecho do seu código, um parêntese é fechado, porém, não consegui identificar a sua abertura:

NUMSERIE:= SELECT NUMSERIE  FROM CTRL_SERIE_BPE WHERE ACTIVO = 1 AND ESTADO_ID=linha.EMPRESA_ID and EMPRESA_ID=linha.EMPRESA_ID ) > linha.SERIE;

Trecho de código do Valdevir, onde ele fecha o parêntese, mas não houve a abertura

Aguardo o seu retorno!