Un modo poco raffinato, ma comunque funzionale, potrebbe essere il seguente:

gli passi come parametro MAG l'elenco di valori separati da virgole (anche all'inizio e alla fine), del tipo ',A,B,C,'

e rivedi la tua select come segue:

SELECT
SUM(C_ENTRATO_QTA)
INTO TQTA
FROM
ST_COMM_GIORN
WHERE
C_DATA BETWEEN QTA_MAG.DTIN AND QTA_MAG.DTFI AND
C_FLG_FLUSSO='MOV' AND
C_REFERENZA=QTA_MAG.REFE AND

instr (','||MAG||',', C_CDC_MAG)> 0

RETURN(TQTA);

La funzione instr restituisce la posizione della seconda stringa all'interno della prima. Se la stringa è presente, la funziona ritorna quindi un valore > 0. Le virgole all'inizio e alla fine servono a limitare i valori all'interno della stringa. Se il tuo parametro MAG può contenere delle virgole, usa un delimitatore differente.

Va detto che creare una function che si limita a fare una select... di solito non ha molto senso. Tanto vale fare direttamente la select,e recuperarne il valore