Skip to Main Content

APEX

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Error No data found when compiling PL/SQL function body returning SQL Query source

Hi all. I'm on APEX 22.2.6.

I have an interactive report which has source set to PL/SQL Function body returning SQL Query; when I compile my code, I receive ORA-01403 error, no data found.

I have executed the code in SQL Developer and I retrieve data wihtout problems.

Can you please help me to find where is the error?

Here is the code:

declare 
istruzione clob := null;

lungh_campo number := null;
POS_SUBSTR NUMBER := 2;
GIRI_LOOP NUMBER := 0;
sub_select clob := null;

begin
/** mi costruisco la sub_select ***/
/** mi tiro fuori la lunghezza dell'errore **/

select length(cod_Err) 
into lungh_campo 
from stato_di_lavorazione
where ANNO = :P15_ANNO
AND CODICE = :P15_CODICE
AND CID = :P15_CID
AND COD_VERS = :P15_COD_VERSIONE; 

IF LUNGH_CAMPO >= 4 THEN
    GIRI_LOOP := LUNGH_CAMPO/4;
END IF;


IF GIRI_LOOP > 0 THEN
    FOR I IN 1..GIRI_LOOP LOOP
        IF I = 1 THEN

            sub_select := 'SELECT SUBSTR(COD_ERR,2,3) 
                FROM STATO_DI_LAVORAZIONE 
                WHERE ANNO = '||:P15_ANNO||'
                AND CODICE = '||:P15_CODICE||'
                AND CID =  '||:P15_CID||' 
                AND COD_VERS = '||:P15_COD_VERSIONE||'';

            POS_SUBSTR := POS_SUBSTR+4;
        ELSE
            sub_select := sub_select|| 'UNION ALL 
                SELECT SUBSTR(COD_ERR,'||POS_SUBSTR||',3) 
                FROM STATO_DI_LAVORAZIONE 
                WHERE ANNO = '||:P15_ANNO||' 
                AND CODICE = '||:P15_CODICE||' 
                AND CID =  '||:P15_CID||'  
                AND COD_VERS = '||:P15_COD_VERSIONE||' ';

            POS_SUBSTR := POS_SUBSTR+4;

        END IF;
    END LOOP;

    sub_select := sub_select||')';
 --DBMS_OUTPUT.PUT_LINE('ISTRUZIONE VALE '||CHR(10)||ISTRUZIONE);
ELSE
    sub_select := NULL;
END IF; 

/******************************/


/* SELECT BASE PER ISTRUZIONE **/
ISTRUZIONE := q'~ SELECT A.COD_VOCE AS COD_VOCE, DESCRIZIONE, DESCR_VOCE, TIPO_ERR 
    FROM ERRORI_SCI A, VOCE B 
    WHERE A.ANNO = :P15_ANNO  
    AND A.COD_VERS = :P15_COD_VERSIONE 
    AND A.COD_VOCE = :P15_COD_VOCE 
    AND A.ANNO = B.ANNO 
    AND A.COD_VOCE = B.COD_VOCE  
    AND ERRORE IN('~'||sub_select||q'~ ~';




RETURN ISTRUZIONE;


end;
Comments
Post Details
Added on Jun 11 2025
2 comments
92 views